/** * Function that adds the help tabs for the options. */ function amt_options_page() { // Permission Check if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } // Default Add-Meta-Tags Settings $default_options = amt_get_default_options(); if (isset($_POST['info_update'])) { // Save the Add-Meta-Tags settings amt_save_settings($_POST); // Also, since it may happen that the rewrite rules have not been flushed // this is a good place to do it. flush_rewrite_rules(); // Also, clear the metadata cache automatically on every save. $result = amt_delete_all_transient_metadata_cache(); if (intval($result) > 0) { amt_show_info_msg(sprintf(__('Deleted %d transient metadata cache entries.', 'add-meta-tags'), $result)); } } elseif (isset($_POST["info_reset"])) { amt_reset_settings(); } // Get the options from the DB. $options = get_option("add_meta_tags_opts"); //var_dump($options); /* Configuration Page */ print ' <!-- #add-meta-tags-settings is required by the media selector --> <span id="add-meta-tags-settings"> '; print ' <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div> <h2>' . __('Metadata Settings', 'add-meta-tags') . '</h2> <p>' . __('Welcome to the administration panel of the Add-Meta-Tags plugin.', 'add-meta-tags') . '</p> </div> <div class="wrap amt-settings-notice"> <!-- <h3>' . __('Notice', 'add-meta-tags') . '</h3> --> <p>' . __('Press the <code>Help</code> button on the top right corner for an introduction to metadata and also for detailed <strong>documentation</strong> about the available settings and the metadata generators. All help texts will gradually be moved to this integrated WordPress help system in order to reduce the size of this page and make it more user-friendly.', 'add-meta-tags') . '</p> </div> <!-- <div class="wrap amt-settings-notice"> <p>' . __('It is no longer possible to enter the URLs of the Publisher\'s social media profiles in the WordPress user profile page. Instead, this information should be entered in the relevant fields of the <strong>Publisher Settings</strong> section below.', 'add-meta-tags') . '</p> </div> --> <div class="wrap amt-settings-donations-msg" style="' . ($options["i_have_donated"] == "1" ? 'display: none;' : '') . '"> <h3>' . __('Message from the author', 'add-meta-tags') . '</h3> <p><em>Add-Meta-Tags</em> is released under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License version 2</a> and, therefore, is <strong>Free software</strong>. It is actively maintained and supported free of charge since 2006.</p> <p>However, a significant amount of <strong>time</strong> and <strong>energy</strong> has been put into the development of this plugin, so, its production has not been free from cost. If you find this plugin useful and if it has helped your blog get indexed better and rank higher, I would appreciate an <a href="http://bit.ly/HvUakt">extra cup of coffee</a>.</p> <!-- <p">Donations in BitCoin (BTC) are also accepted and welcome. Send the donated coin to the following address:</p> <ul> <li style="margin-left: 1em;">BitCoin (BTC): <code>1KkgpmaBKqQVk643VRhFRkL19Bbci4Mwn9</code></li> </ul> --> <p>Thank you in advance,<br />George Notaras</p> <div style="text-align: right;"><small>' . __('This message can be deactivated in the settings below.', 'add-meta-tags') . '</small></div> </div> <div class="wrap"> <h2>' . __('Configuration', 'add-meta-tags') . '</h2> <p>' . __('This section contains global configuration options for the metadata that is added to your web site.', 'add-meta-tags') . '</p> <form name="formamt" method="post" action="' . admin_url('options-general.php?page=add-meta-tags-options') . '"> <table class="form-table"> <tbody> '; // General Settings if (amt_has_page_on_front()) { /* Options: Example No pages +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | posts | yes | | 93 | page_for_posts | 0 | yes | | 94 | page_on_front | 0 | yes | +-----------+----------------+--------------+----------+ Example pages as front page and posts page +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | page | yes | | 93 | page_for_posts | 28 | yes | | 94 | page_on_front | 25 | yes | +-----------+----------------+--------------+----------+ */ print ' <tr valign="top"> <th scope="row">' . __('Front Page Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Metadata', 'add-meta-tags') . '</span></legend> ' . __('It appears that you use static pages on the <em>front page</em> and the <em>latest posts page</em> of this web site. Please visit the editing panel of these pages and set the <code>description</code> and the <code>keywords</code> meta tags in the relevant Metadata box.', 'add-meta-tags') . ' '; print '<ul>'; $front_page_id = get_option('page_on_front'); if (intval($front_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">front page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($front_page_id))); } $posts_page_id = get_option('page_for_posts'); if (intval($posts_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">posts page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($posts_page_id))); } print '</ul>'; print ' </fieldset> </td> </tr> '; } else { print ' <tr valign="top"> <th scope="row">' . __('Front Page Description', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Description', 'add-meta-tags') . '</span></legend> <textarea name="site_description" id="site_description" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_description($options))) . '</textarea> <br /> <label for="site_description"> ' . __('Enter a short description of your web site.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Front Page Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Keywords', 'add-meta-tags') . '</span></legend> <textarea name="site_keywords" id="site_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_keywords($options))) . '</textarea> <br /> <label for="site_keywords">' . __('Enter a comma-delimited list of keywords for your web site.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> '; } print ' <tr valign="top"> <th scope="row">' . __('Global Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Global Keywords', 'add-meta-tags') . '</span></legend> <textarea name="global_keywords" id="global_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_global_keywords($options))) . '</textarea> <br /> <label for="global_keywords">' . __('Enter a comma-delimited list of global keywords. Please consult the integrated help for more information.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Site-wide META tags', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Site-wide META tags', 'add-meta-tags') . '</span></legend> <textarea name="site_wide_meta" id="site_wide_meta" cols="100" rows="10" class="code">' . stripslashes($options["site_wide_meta"]) . '</textarea> <br /> <label for="site_wide_meta"> ' . __('Enter complete <a href="http://en.wikipedia.org/wiki/Meta_element" target="_blank">meta tags</a> which will appear on all web pages.', 'add-meta-tags') . ' ' . __('Please, do not enter keywords here.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> '; // Publisher Settings print ' <tr valign="top"> <th scope="row">' . __('Publisher Settings', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Publisher Settings', 'add-meta-tags') . '</span></legend> <p>' . __('This section contains options related to your web site; the publisher of the content.', 'add-meta-tags') . '</p> <p>' . __('The following publisher related settings are shared among all users. Filling in these settings is entirely optional.', 'add-meta-tags') . '</p> <h4>' . __('Facebook publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_publisher_profile_url" type="text" id="social_main_facebook_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_facebook_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_publisher_profile_url"> ' . __('Enter an absolute URL to the Facebook profile of the publisher. If this is filled in, it will be used in the <code>article:publisher</code> meta tag.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://www.facebook.com/awesome.editors</code></p> <br /> <!-- We currently let users add the full meta tags for fb:app_id and fb:admins in the site wide meta tags box. <h4>' . __('Facebook App ID', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_app_id" type="text" id="social_main_facebook_app_id" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_app_id"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_app_id"> ' . __('Enter the App ID for <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1234567890</code></p> <br /> <h4>' . __('Facebook Admin ID list', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_admins" type="text" id="social_main_facebook_admins" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_admins"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_admins"> ' . __('Enter a comma delimited list of numerical Facebook user IDs which will have access to <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1111111111,2222222222</code></p> <br /> --> <h4>' . __('Google+ publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_googleplus_publisher_profile_url" type="text" id="social_main_googleplus_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_googleplus_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_googleplus_publisher_profile_url"> ' . __('Enter an absolute URL to the Google+ profile of the publisher. If this is filled in, it will be used in the link with <code>rel="publisher"</code> in the HEAD area of the web page.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://plus.google.com/+AwesomeEditors/</code></p> <br /> <h4>' . __('Twitter publisher username', 'add-meta-tags') . ':</h4> <input name="social_main_twitter_publisher_username" type="text" id="social_main_twitter_publisher_username" class="code" value="' . esc_attr(stripslashes($options["social_main_twitter_publisher_username"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_twitter_publisher_username"> ' . __('Enter the Twitter username of the publisher (without @).', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>AwesomeEditors</code></p> <br /> </fieldset> </td> </tr> '; // Author Settings print ' <tr valign="top"> <th scope="row">' . __('Author Settings', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Author Settings', 'add-meta-tags') . '</span></legend> <p>' . __('This section contains options related to the authors of the content.', 'add-meta-tags') . '</p> <h4>' . __('URLs of author profiles on social networks', 'add-meta-tags') . ':</h4> <p>' . __('Each author may fill in the the URLs of the profiles on external social networks in the WordPress user profile page (fields marked with <em>AMT</em>).', 'add-meta-tags') . '</p> <h4>' . __('Main source of local author profiles', 'add-meta-tags') . ':</h4> <select name="author_profile_source" type="text" id="author_profile_source" class="code"> <option ' . ($options["author_profile_source"] == "default" ? 'selected="selected"' : '') . ' value="default">' . __('First page of the author archive', 'add-meta-tags') . ' ' . __('(default)', 'add-meta-tags') . ' — ' . __('Organization web site', 'add-meta-tags') . '</option> <option ' . ($options["author_profile_source"] == "frontpage" ? 'selected="selected"' : '') . ' value="frontpage">' . __('Front page (with static page only)', 'add-meta-tags') . ' — ' . __('Personal web site', 'add-meta-tags') . '</option> <option ' . ($options["author_profile_source"] == "buddypress" ? 'selected="selected"' : '') . ' value="buddypress">' . __('BuddyPress member page', 'add-meta-tags') . ' — ' . __('Organization web site', 'add-meta-tags') . '</option> <option ' . ($options["author_profile_source"] == "url" ? 'selected="selected"' : '') . ' value="url">' . __('Author\'s external web site URL', 'add-meta-tags') . ' — ' . __('Organization web site', 'add-meta-tags') . '</option> </select> <br /><br /> <p>' . __('This is an advanced option and should not be changed, unless you have consulted the integrated help for more information.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> '; // Basic Metadata print ' <tr valign="top"> <th scope="row">' . __('Basic Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Basic Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_description" type="checkbox" value="1" name="auto_description" ' . ($options["auto_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_description">' . __('Automatically generate the <em>description</em> meta tag.', 'add-meta-tags') . '</label> <br /> <input id="auto_keywords" type="checkbox" value="1" name="auto_keywords" ' . ($options["auto_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_keywords">' . __('Automatically generate the <em>keywords</em> meta tag.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Opengraph Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Opengraph Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_opengraph" type="checkbox" value="1" name="auto_opengraph" ' . ($options["auto_opengraph"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_opengraph">' . __('Automatically generate Opengraph meta tags.', 'add-meta-tags') . '</label> <br /> <input id="og_add_xml_namespaces" type="checkbox" value="1" name="og_add_xml_namespaces" ' . ($options["og_add_xml_namespaces"] == "1" ? 'checked="checked"' : '') . '" /> <label for="og_add_xml_namespaces">' . __('Add Facebook\'s XML namespaces.', 'add-meta-tags') . '</label> <br /> <input id="og_omit_video_metadata" type="checkbox" value="1" name="og_omit_video_metadata" ' . ($options["og_omit_video_metadata"] == "1" ? 'checked="checked"' : '') . '" /> <label for="og_omit_video_metadata">' . __('Omit <code>og:video</code> meta tags.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Twitter Cards Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Twitter Cards Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_twitter" type="checkbox" value="1" name="auto_twitter" ' . ($options["auto_twitter"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_twitter">' . __('Automatically generate Twitter Cards meta tags.', 'add-meta-tags') . '</label> <br /> <input id="tc_enforce_summary_large_image" type="checkbox" value="1" name="tc_enforce_summary_large_image" ' . ($options["tc_enforce_summary_large_image"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enforce_summary_large_image">' . __('Enforce the use of <code>summary_large_image</code> as default card type.', 'add-meta-tags') . '</label> <br /> <input id="tc_enable_player_card_local" type="checkbox" value="1" name="tc_enable_player_card_local" ' . ($options["tc_enable_player_card_local"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enable_player_card_local">' . __('Enable the generation of <em>player</em> cards for local media.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Dublin Core Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Dublin Core Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_dublincore" type="checkbox" value="1" name="auto_dublincore" ' . ($options["auto_dublincore"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_dublincore">' . __('Automatically generate Dublin Core metadata.', 'add-meta-tags') . '</label> <br /> <input id="dc_add_xml_namespaces" type="checkbox" value="1" name="dc_add_xml_namespaces" ' . ($options["dc_add_xml_namespaces"] == "1" ? 'checked="checked"' : '') . '" /> <label for="dc_add_xml_namespaces">' . __('Add the Dublin Core XML namespace.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Schema.org Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Schema.org Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_schemaorg" type="checkbox" value="1" name="auto_schemaorg" ' . ($options["auto_schemaorg"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_schemaorg">' . __('Automatically generate and embed Schema.org Microdata.', 'add-meta-tags') . '</label> <br /> <input id="schemaorg_force_jsonld" type="checkbox" value="1" name="schemaorg_force_jsonld" ' . ($options["schemaorg_force_jsonld"] == "1" ? 'checked="checked"' : '') . '" /> <label for="schemaorg_force_jsonld">' . __('Enforce the generation of schema.org metadata as JSON-LD data.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Locale', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Locale', 'add-meta-tags') . '</span></legend> <input name="global_locale" type="text" id="global_locale" class="code" value="' . esc_attr(stripslashes($options["global_locale"])) . '" size="20" maxlength="32" /> <br /> <label for="global_locale"> ' . __('Enter a locale, for example <code>en_US</code> or <code>zh_Hans_TW</code>, which will be used globally in the generated metadata overriding the default locale as returned by WordPress.', 'add-meta-tags') . ' ' . __('The locale can be overridden on a per post basis. For this purpose, enabling the relevant metabox feature below is required.', 'add-meta-tags') . ' </label> <br /> <input id="manage_html_lang_attribute" type="checkbox" value="1" name="manage_html_lang_attribute" ' . ($options["manage_html_lang_attribute"] == "1" ? 'checked="checked"' : '') . '" /> <label for="manage_html_lang_attribute">' . __('Automatically set the HTML document\'s <code>lang</code> attribute according to the locale of the content.', 'add-meta-tags') . '</label> <br /> <input id="generate_hreflang_links" type="checkbox" value="1" name="generate_hreflang_links" ' . ($options["generate_hreflang_links"] == "1" ? 'checked="checked"' : '') . '" /> <label for="generate_hreflang_links">' . __('Enable the generation of a <code>link</code> element with the <code>hreflang</code> attribute.', 'add-meta-tags') . '</label> <br /> <input id="hreflang_strip_region" type="checkbox" value="1" name="hreflang_strip_region" ' . ($options["hreflang_strip_region"] == "1" ? 'checked="checked"' : '') . '" /> <label for="hreflang_strip_region">' . __('Strip region code from the hreflang attribute.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Metabox Features', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Metabox Features', 'add-meta-tags') . '</span></legend> <p>' . __('It is possible to partially customize the generated metadata on a per post basis through the <em>Metadata</em> metabox which exists in the post editing screen. Below you can choose which metabox features should be enabled. Enabling or disabling these features has no effect on the custom data that has been stored for each post.', 'add-meta-tags') . '</p> <p><input id="metabox_enable_description" type="checkbox" value="1" name="metabox_enable_description" ' . ($options["metabox_enable_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_description"> ' . __('Custom description.', 'add-meta-tags') . ' (' . __('Recommended', 'add-meta-tags') . ') </label></p> <p><input id="metabox_enable_keywords" type="checkbox" value="1" name="metabox_enable_keywords" ' . ($options["metabox_enable_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_keywords"> ' . __('Custom keywords.', 'add-meta-tags') . ' (' . __('Recommended', 'add-meta-tags') . ') </label></p> <p><input id="metabox_enable_title" type="checkbox" value="1" name="metabox_enable_title" ' . ($options["metabox_enable_title"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_title"> ' . __('Custom content of the <code>title</code> HTML element.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_news_keywords" type="checkbox" value="1" name="metabox_enable_news_keywords" ' . ($options["metabox_enable_news_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_news_keywords"> ' . __('Custom news keywords. (<a target="_blank" href="http://support.google.com/news/publisher/bin/answer.py?hl=en&answer=68297">more info</a>)', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_full_metatags" type="checkbox" value="1" name="metabox_enable_full_metatags" ' . ($options["metabox_enable_full_metatags"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_full_metatags"> ' . __('Full meta tags box.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_image_url" type="checkbox" value="1" name="metabox_enable_image_url" ' . ($options["metabox_enable_image_url"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_image_url"> ' . __('Global image override.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_content_locale" type="checkbox" value="1" name="metabox_enable_content_locale" ' . ($options["metabox_enable_content_locale"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_content_locale"> ' . __('Content locale override. (Not to be used in conjunction with a multilingual plugin.) ', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_express_review" type="checkbox" value="1" name="metabox_enable_express_review" ' . ($options["metabox_enable_express_review"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_express_review"> ' . __('Express review.', 'add-meta-tags') . ' (' . __('For advanced users only', 'add-meta-tags') . ') </label></p> <p><input id="metabox_enable_referenced_list" type="checkbox" value="1" name="metabox_enable_referenced_list" ' . ($options["metabox_enable_referenced_list"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_referenced_list"> ' . __('Referenced items.', 'add-meta-tags') . ' (' . __('Not recommended', 'add-meta-tags') . ') </label></p> '; // The term meta API was implemented in 4.4 if (version_compare(get_bloginfo('version'), '4.4', '>=')) { print ' <h4>' . __('Taxonomy terms', 'add-meta-tags') . ':</h4> <p><input id="metabox_term_enable_full_metatags" type="checkbox" value="1" name="metabox_term_enable_full_metatags" ' . ($options["metabox_term_enable_full_metatags"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_term_enable_full_metatags"> ' . __('Full meta tags box.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_term_enable_image_url" type="checkbox" value="1" name="metabox_term_enable_image_url" ' . ($options["metabox_term_enable_image_url"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_term_enable_image_url"> ' . __('Global image override.', 'add-meta-tags') . ' </label></p> '; } print ' <h4>' . __('WordPress user profiles', 'add-meta-tags') . ':</h4> <p><input id="metabox_user_enable_full_metatags" type="checkbox" value="1" name="metabox_user_enable_full_metatags" ' . ($options["metabox_user_enable_full_metatags"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_user_enable_full_metatags"> ' . __('Full meta tags box.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_user_enable_image_url" type="checkbox" value="1" name="metabox_user_enable_image_url" ' . ($options["metabox_user_enable_image_url"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_user_enable_image_url"> ' . __('Global image override.', 'add-meta-tags') . ' </label></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extra SEO Options', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extra SEO Options', 'add-meta-tags') . '</span></legend> <input id="noodp_description" type="checkbox" value="1" name="noodp_description" ' . ($options["noodp_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noodp_description">' . __('Add <code>NOODP</code> and <code>NOYDIR</code> to the <em>robots</em> meta tag.', 'add-meta-tags') . '</label> <br /> <br /> <p>' . __('Add <code>NOINDEX,FOLLOW</code> to the <em>robots</em> meta tag on following types of archives:', 'add-meta-tags') . '</p> <p><input id="noindex_search_results" type="checkbox" value="1" name="noindex_search_results" ' . ($options["noindex_search_results"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_search_results"> ' . __('Search results.', 'add-meta-tags') . ' (' . __('Highly recommended', 'add-meta-tags') . ') </label></p> <p><input id="noindex_date_archives" type="checkbox" value="1" name="noindex_date_archives" ' . ($options["noindex_date_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_date_archives"> ' . __('Date based archives.', 'add-meta-tags') . ' (' . __('Recommended', 'add-meta-tags') . ') </label></p> <p><input id="noindex_category_archives" type="checkbox" value="1" name="noindex_category_archives" ' . ($options["noindex_category_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_category_archives"> ' . __('Category based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_tag_archives" type="checkbox" value="1" name="noindex_tag_archives" ' . ($options["noindex_tag_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_tag_archives"> ' . __('Tag based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_taxonomy_archives" type="checkbox" value="1" name="noindex_taxonomy_archives" ' . ($options["noindex_taxonomy_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_taxonomy_archives"> ' . __('Custom taxonomy based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_author_archives" type="checkbox" value="1" name="noindex_author_archives" ' . ($options["noindex_author_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_author_archives"> ' . __('Author based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <br /> <p><input id="enforce_custom_title_in_metadata" type="checkbox" value="1" name="enforce_custom_title_in_metadata" ' . ($options["enforce_custom_title_in_metadata"] == "1" ? 'checked="checked"' : '') . '" /> <label for="enforce_custom_title_in_metadata"> ' . __('Enforce the use of the content\'s custom title in the generated metadata.', 'add-meta-tags') . ' </label></p> <br /> <p><input id="enable_advanced_title_management" type="checkbox" value="1" name="enable_advanced_title_management" ' . ($options["enable_advanced_title_management"] == "1" ? 'checked="checked"' : '') . '" /> <label for="enable_advanced_title_management"> ' . __('Enable advanced title management.', 'add-meta-tags') . ' (<a target="_blank" href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki/Advanced_Title_Management">' . __('Learn more', 'add-meta-tags') . '</a>) </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Copyright URL', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Copyright URL', 'add-meta-tags') . '</span></legend> <input name="copyright_url" type="text" id="copyright_url" class="code" value="' . esc_url(stripslashes(amt_get_site_copyright_url($options))) . '" size="100" maxlength="1024" /> <br /> <label for="copyright_url"> ' . __('Enter an absolute URL to a document containing copyright and licensing information about your work.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Default Image', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Default Image', 'add-meta-tags') . '</span></legend> <input name="default_image_url" type="text" id="default_image_url" class="code" value="' . amt_esc_id_or_url_notation(stripslashes($options["default_image_url"])) . '" size="100" maxlength="1024" /> <br /> <span id="amt-default-image-selector-button" class="amt-default-image-selector-button wp-media-buttons-icon loadmediawindow button updatemeta button-small">Select image</span> <br /> <label for="default_image_url"> ' . __('Enter an absolute URL to an image that represents your website, for instance the logo. To specify the image dimensions you can use the special notation <code>URL,WIDTHxHEIGHT</code>.', 'add-meta-tags') . ' </label> <br /> '; // Default image preview $image_data = amt_get_default_image_data(); $img_html = ''; if (is_numeric($image_data['id'])) { $main_size_meta = wp_get_attachment_image_src($image_data['id'], 'medium'); $img_html = '<img src="' . esc_url($main_size_meta[0]) . '" width="' . esc_attr($main_size_meta[1]) . '" height="' . esc_attr($main_size_meta[2]) . '" />'; } elseif (!is_null($image_data['url'])) { $img_html = '<img src="' . esc_url($image_data['url']) . '" width="' . esc_attr($image_data['width']) . '" height="' . esc_attr($image_data['height']) . '" />'; } if (!empty($img_html)) { print ' <p>' . __('Image preview', 'add-meta-tags') . ':</p> <br /> <div id="amt-image-preview" class="amt-image-preview">' . $img_html . '</div> '; } print ' </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Shortcodes', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Shortcodes', 'add-meta-tags') . '</span></legend> <input id="expand_shortcodes" type="checkbox" value="1" name="expand_shortcodes" ' . ($options["expand_shortcodes"] == "1" ? 'checked="checked"' : '') . '" /> <label for="expand_shortcodes">' . __('Enforce the expansion of shortcodes before generating a description.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Secure Access', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Secure Access', 'add-meta-tags') . '</span></legend> <input id="has_https_access" type="checkbox" value="1" name="has_https_access" ' . ($options["has_https_access"] == "1" ? 'checked="checked"' : '') . '" /> <label for="has_https_access">' . __('Media are accessible over HTTPS.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Media Limit', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Media Limit', 'add-meta-tags') . '</span></legend> <input id="force_media_limit" type="checkbox" value="1" name="force_media_limit" ' . ($options["force_media_limit"] == "1" ? 'checked="checked"' : '') . '" /> <label for="force_media_limit">' . __('Do not generate metadata for more than one media file of each type (image, video, audio).', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Review Mode', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Review Mode', 'add-meta-tags') . '</span></legend> <input id="review_mode" type="checkbox" value="1" name="review_mode" ' . ($options["review_mode"] == "1" ? 'checked="checked"' : '') . '" /> <label for="review_mode">' . __('Enable <em>Metadata Review Mode</em>.', 'add-meta-tags') . '</label> <br /> <input id="review_mode_metadata_report" type="checkbox" value="1" name="review_mode_metadata_report" ' . ($options["review_mode_metadata_report"] == "1" ? 'checked="checked"' : '') . '" /> <label for="review_mode_metadata_report">' . __('Enable keyword analysis and statistics.', 'add-meta-tags') . '</label> (<a target="_blank" href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki/Metadata_Overview">' . __('Learn more', 'add-meta-tags') . '</a>) (<span style="color:red;">' . __('Experimental', 'add-meta-tags') . '</span>) <br /> <input id="review_mode_omit_notices" type="checkbox" value="1" name="review_mode_omit_notices" ' . ($options["review_mode_omit_notices"] == "1" ? 'checked="checked"' : '') . '" /> <label for="review_mode_omit_notices">' . __('Omit help messages and notices. I have read, understood and agreed to them.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extended Metadata Support', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extended Metadata Support', 'add-meta-tags') . '</span></legend> <p>' . __('Add-Meta-Tags supports the generation of metadata for products and other post types. Please enable any of the following generators of extended metadata.', 'add-meta-tags') . '</p> <br /> <p><input id="extended_support_woocommerce" type="checkbox" value="1" name="extended_support_woocommerce" ' . ($options["extended_support_woocommerce"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_woocommerce"> ' . __('Metadata for WooCommerce products and product groups.', 'add-meta-tags') . ' </label></p> <p><input id="extended_support_edd" type="checkbox" value="1" name="extended_support_edd" ' . ($options["extended_support_edd"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_edd"> ' . __('Metadata for Easy-Digital-Downloads products and product groups.', 'add-meta-tags') . ' (<span style="color:red;">' . __('Work in progress', 'add-meta-tags') . '</span>) </label></p> <p><input id="extended_support_buddypress" type="checkbox" value="1" name="extended_support_buddypress" ' . ($options["extended_support_buddypress"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_buddypress"> ' . __('Metadata for BuddyPress profiles.', 'add-meta-tags') . ' </label></p> <p><input id="extended_support_bbpress" type="checkbox" value="1" name="extended_support_bbpress" ' . ($options["extended_support_bbpress"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_bbpress"> ' . __('Metadata for bbPress.', 'add-meta-tags') . ' (<span style="color:red;">' . __('Work in progress', 'add-meta-tags') . '</span>) </label></p> <br /> <p>' . __('Please consult the integrated help for more information about these features.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> '; // Metadata Caching if (apply_filters('amt_enable_metadata_cache', true)) { print ' <tr valign="top"> <th scope="row">' . __('Metadata Caching', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Metadata Caching', 'add-meta-tags') . '</span></legend> <input id="enable_timings" type="checkbox" value="1" name="enable_timings" ' . ($options["enable_timings"] == "1" ? 'checked="checked"' : '') . '" /> <label for="enable_timings">' . __('Show timing information.', 'add-meta-tags') . '</label> <br /><br /> <label for="transient_cache_expiration">' . __('Cache metadata for this number of seconds:', 'add-meta-tags') . '</label> <input id="transient_cache_expiration" type="text" name="transient_cache_expiration" value="' . esc_attr($options["transient_cache_expiration"]) . '" size="10" maxlength="16" class="code" /> <br /><br /> <p>' . __('Metadata caching is an advanced feature and should only be used after you have read and fully understood the <em>Metadata caching</em> section of the integrated help.', 'add-meta-tags') . '</p> <br /> '; // Metadata cache status if (absint($options["transient_cache_expiration"]) > 0) { // Get the number of cached entries // This only works when the database is used as the Transient Data storage backend. // If external storage backends are used for the transient data, this is always going to be zeo. $nr_cached_blocks = amt_count_transient_metadata_cache_entries(); if (absint($nr_cached_blocks) > 0) { print ' <p>' . __('<strong>Metadata cache status</strong>: <em>Activated</em>, <strong style="color: green;">' . esc_attr($nr_cached_blocks) . '</strong> metadata blocks have been cached. All cached metadata blocks will be automatically purged the next time these settings are saved.', 'add-meta-tags') . '</p> <br /> '; } else { print ' <p>' . __('<strong>Metadata cache status</strong>: <em>Activated</em>, but no cached metadata blocks have been detected. This means that either no metadata blocks have been cached yet in the database or your WordPress installation uses an external storage backend for the transient data.', 'add-meta-tags') . '</p> <br /> '; } } else { print ' <p>' . __('<strong>Metadata cache status</strong>: <em>Deactivated</em>. The caching timeout is set to zero, so metadata blocks are not cached.', 'add-meta-tags') . '</p> <br /> '; } print ' </fieldset> </td> </tr> '; } print ' <tr valign="top"> <th scope="row">' . __('Vendor HTML comments', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Vendor HTML comments', 'add-meta-tags') . '</span></legend> <p> ' . __('Add-Meta-Tags has always been enclosing its output in <a target="_blank" href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki/Screenshots#Vendor-HTML-comments">HTML comments</a>, which contain the plugin\'s name. This is common practice among WordPress plugin developers as it makes it easier for users to identify the output of a specific plugin and also lets those who check the HTML source code of the page know which plugin has generated this specific output. For a free product with limited resources like Add-Meta-Tags this practice is also its only means of exposure in a safe and non intrusive way.', 'add-meta-tags') . ' </p> <br /> <p> ' . __('Although we don\'t like it, we have added the following option which deactivates the generation of those HTML comments*. We do not recommend checking the following box, but, if for whatever reason you have to turn these comments off, please go ahead and do it. To make it a little harder for you, an artificial requirement of a one time donation for any number of web sites you own has been added. Please keep in mind that there are no special donation links for this purpose. We do not force or keep track of your donations. You are free to go ahead and check this box without donating. What you do is totally your own decision and has nothing to do with us.', 'add-meta-tags') . ' </p> <br /> <input id="omit_vendor_html_comments" type="checkbox" value="1" name="omit_vendor_html_comments" ' . ($options["omit_vendor_html_comments"] == "1" ? 'checked="checked"' : '') . '" /> <label for="omit_vendor_html_comments">' . sprintf(__('I have made a one time <a target="_blank" href="%s">donation</a> of 5 USD or more for all the web sites I own.', 'add-meta-tags'), 'http://bit.ly/HvUakt') . '</label> ** <br /> <p> ' . __('<em>* HTML comments that are generated as part of the Schema.org microdata are always retained.</em>', 'add-meta-tags') . ' </p> <p> ' . __('<em>** All Add-Meta-Tags contributors should feel free to check the option above without donating.</em>', 'add-meta-tags') . ' </p> <br /> </fieldset> </td> </tr> '; print ' <tr valign="top"> <th scope="row">' . __('Donations', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Donations', 'add-meta-tags') . '</span></legend> <input id="i_have_donated" type="checkbox" value="1" name="i_have_donated" ' . ($options["i_have_donated"] == "1" ? 'checked="checked"' : '') . '" /> <label for="i_have_donated">' . sprintf(__('If checked, the <em>message from the author</em> above goes away. Thanks for <a target="_blank" href="%s">donating</a>!', 'add-meta-tags'), 'http://bit.ly/HvUakt') . '</label> <br /> </fieldset> </td> </tr> </tbody> </table> <!-- Submit Buttons --> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"> <input id="submit" class="button-primary" type="submit" value="' . __('Save Changes', 'add-meta-tags') . '" name="info_update" /> </th> <!-- <th scope="row"> <input id="reset" class="button-primary" type="submit" value="' . __('Reset to defaults', 'add-meta-tags') . '" name="info_reset" /> </th> --> <th></th><th></th><th></th><th></th> </tr> </tbody> </table> <br /><br /><br /> <h2 class="title">' . __('Notes', 'add-meta-tags') . '</h2> <p>' . __('More management tools are available via the <code>amt</code> command of <code>wp-cli</code>. Learn more about the <a target="_blank" href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki/Command_Line_Interface">Add-Meta-Tags command line interface</a>.', 'add-meta-tags') . '</p> </form> </div> '; print ' </span> <!-- #add-meta-tags-settings --> '; }
/** * Add Schema.org Microdata in the footer. * * Mainly used to embed microdata to front page, posts index page and archives. */ function amt_add_jsonld_schemaorg_metadata_head($post, $attachments, $embedded_media, $options) { if (apply_filters('amt_exclude_schemaorg_metadata', false)) { return array(); } $do_auto_schemaorg = $options["auto_schemaorg"] == "1" ? true : false; if (!$do_auto_schemaorg) { return array(); } // Check if the microdata or the JSON-LD schema.org generator should be used. if ($options["schemaorg_force_jsonld"] == "0") { // Here we check for AMP page https://www.ampproject.org/ // For AMP pages, if the Schema.org microdata generator has been enabled, // we enforce the JSON+LD form instead of microdata. if ($do_auto_schemaorg && function_exists('is_amp_endpoint') && is_amp_endpoint()) { // Do nothing and let it proceed with forced generation of JSON+LD Schema.org metadata. } else { return array(); } } $metadata_arr = array(); // Context $metadata_arr['@context'] = 'http://schema.org'; // TODO: Check if this is_paged() check is needed. If removed, make sure that titles and descriptions are passed through multipage function. if (is_paged()) { // // Currently we do not support adding Schema.org metadata on // paged archives, if page number is >=2 // // NOTE: This refers to an archive or the main page being split up over // several pages, this does not refer to a Post or Page whose content // has been divided into pages using the <!--nextpage--> QuickTag. // // Multipage content IS processed below. // return array(); } // Custom content override if (amt_is_custom($post, $options)) { // Return metadata with: // add_filter( 'amt_custom_metadata_jsonld_schemaorg', 'my_function', 10, 5 ); // Return an array of meta tags. Array item format: ['key_can_be_whatever'] = '<meta name="foo" content="bar" />' $metadata_arr = apply_filters('amt_custom_metadata_jsonld_schemaorg', $metadata_arr, $post, $options, $attachments, $embedded_media); // Default fron tpage displaying the latest posts. } elseif (amt_is_default_front_page()) { // On the front page we are adding two top level entities, so we remove // the existing context, as the entities need to be in an array and each // array item needs its own context. unset($metadata_arr['@context']); // Organization // // NOTICE: // Even if the front page has been set as the source of profile, this // this does not work with the default front page with the latest posts. // This is becuase this page does not have an author, which is essential // for the generated metadata on a page that is supposed to be a profile. // Therefore, an Organization object is always generated on the default // front page and it is never treated as a profile page by Add-Meta-Tags. // $organization_arr = array(); // Context $organization_arr['@context'] = 'http://schema.org'; // ID $organization_arr['@id'] = amt_get_schemaorg_entity_id('organization'); $organization_arr = array_merge($organization_arr, amt_get_jsonld_schemaorg_publisher_array($options)); // mainEntityOfPage $organization_arr['mainEntityOfPage'] = esc_url(trailingslashit(get_bloginfo('url'))); // Get publisher/mainEntity metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_publisher_metatags( $options ) ); // WebSite $website_arr = array(); // Context $website_arr['@context'] = 'http://schema.org'; // ID $website_arr['@id'] = amt_get_schemaorg_entity_id('website'); // Type $website_arr['@type'] = 'WebSite'; // name $website_arr['name'] = esc_attr(get_bloginfo('name')); // headline - contains title information $website_arr['headline'] = esc_attr(amt_get_title_for_metadata($options, $post)); // alternateName (The WordPress tag line is used.) // TODO: use tag line. Needs feedback! // url $website_arr['url'] = esc_url_raw(trailingslashit(get_bloginfo('url'))); // publisher // $website_arr['publisher'] = array( '@id' => esc_attr(amt_get_schemaorg_entity_id('organization') ) ); // SearchAction // Scope BEGIN: SearchAction: http://schema.org/SearchAction // $metadata_arr[] = '<!-- Scope BEGIN: SearchAction -->'; // $metadata_arr[] = '<span itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction">'; $website_arr['potentialAction'] = array(); $website_arr['potentialAction']['@type'] = 'SearchAction'; // target // Scope BEGIN: EntryPoint: http://schema.org/EntryPoint $website_arr['potentialAction']['target'] = array(); $website_arr['potentialAction']['target']['@type'] = 'EntryPoint'; // urlTemplate $website_arr['potentialAction']['target']['urlTemplate'] = esc_url_raw(trailingslashit(get_bloginfo('url'))) . '?s={search_term}'; // Scope END: EntryPoint // $metadata_arr[] = '</span> <!-- Scope END: EntryPoint -->'; // query-input // Scope BEGIN: PropertyValueSpecification: http://schema.org/PropertyValueSpecification //$metadata_arr[] = '<span itemprop="query-input" itemscope itemtype="http://schema.org/PropertyValueSpecification">'; $website_arr['potentialAction']['query-input'] = array(); $website_arr['potentialAction']['query-input']['@type'] = 'PropertyValueSpecification'; // valueRequired $website_arr['potentialAction']['query-input']['valueRequired'] = 'True'; // valueName $website_arr['potentialAction']['query-input']['valueName'] = 'search_term'; // Scope END: PropertyValueSpecification // $metadata_arr[] = '</span> <!-- Scope END: PropertyValueSpecification -->'; // Scope END: SearchAction // $metadata_arr[] = '</span> <!-- Scope END: SearchAction -->'; // Scope END: WebSite // $metadata_arr[] = '</span> <!-- Scope END: WebSite -->'; $metadata_arr = array($organization_arr, $website_arr); // Front page using a static page } elseif (amt_is_static_front_page()) { // On the front page we are adding two top level entities, so we remove // the existing context, as the entities need to be in an array and each // array item needs its own context. unset($metadata_arr['@context']); $main_entity_arr = array(); // Context $main_entity_arr['@context'] = 'http://schema.org'; if ($options['author_profile_source'] == 'frontpage') { // ID $main_entity_arr['@id'] = amt_get_schemaorg_entity_id('person'); // Author // Scope BEGIN: Person: http://schema.org/Person // $metadata_arr[] = '<!-- Scope BEGIN: Person -->'; // $metadata_arr[] = '<span itemprop="author" itemscope itemtype="http://schema.org/Person"' . amt_get_schemaorg_itemref('person_author') . '>'; // Get author metatags $main_entity_arr = array_merge($main_entity_arr, amt_get_jsonld_schemaorg_author_array($post->post_author, $options)); // mainEntityOfPage $main_entity_arr['mainEntityOfPage'] = esc_url(trailingslashit(get_bloginfo('url'))); // Scope END: Person // $metadata_arr[] = '</span> <!-- Scope END: Person -->'; } else { // ID $main_entity_arr['@id'] = amt_get_schemaorg_entity_id('organization'); // Organization $main_entity_arr = array_merge($main_entity_arr, amt_get_jsonld_schemaorg_publisher_array($options)); // mainEntityOfPage $main_entity_arr['mainEntityOfPage'] = esc_url(trailingslashit(get_bloginfo('url'))); // Get publisher/mainEntity metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_publisher_metatags( $options ) ); } // WebSite $website_arr = array(); // Context $website_arr['@context'] = 'http://schema.org'; // ID $website_arr['@id'] = amt_get_schemaorg_entity_id('website'); // Type $website_arr['@type'] = 'WebSite'; // name $website_arr['name'] = esc_attr(get_bloginfo('name')); // headline - contains title information $website_arr['headline'] = esc_attr(amt_get_title_for_metadata($options, $post)); // alternateName (The WordPress tag line is used.) // TODO: use tag line. Needs feedback! // url $website_arr['url'] = esc_url_raw(trailingslashit(get_bloginfo('url'))); // if ( $options['author_profile_source'] == 'frontpage' ) { // author //$website_arr['author'] = array( '@id' => esc_attr(amt_get_schemaorg_entity_id('person') ) ); // } else { // publisher //$website_arr['publisher'] = array( '@id' => esc_attr(amt_get_schemaorg_entity_id('organization') ) ); // } // SearchAction // Scope BEGIN: SearchAction: http://schema.org/SearchAction // $metadata_arr[] = '<!-- Scope BEGIN: SearchAction -->'; // $metadata_arr[] = '<span itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction">'; $website_arr['potentialAction'] = array(); $website_arr['potentialAction']['@type'] = 'SearchAction'; // target // Scope BEGIN: EntryPoint: http://schema.org/EntryPoint $website_arr['potentialAction']['target'] = array(); $website_arr['potentialAction']['target']['@type'] = 'EntryPoint'; // urlTemplate $website_arr['potentialAction']['target']['urlTemplate'] = esc_url_raw(trailingslashit(get_bloginfo('url'))) . '?s={search_term}'; // Scope END: EntryPoint // $metadata_arr[] = '</span> <!-- Scope END: EntryPoint -->'; // query-input // Scope BEGIN: PropertyValueSpecification: http://schema.org/PropertyValueSpecification //$metadata_arr[] = '<span itemprop="query-input" itemscope itemtype="http://schema.org/PropertyValueSpecification">'; $website_arr['potentialAction']['query-input'] = array(); $website_arr['potentialAction']['query-input']['@type'] = 'PropertyValueSpecification'; // valueRequired $website_arr['potentialAction']['query-input']['valueRequired'] = 'True'; // valueName $website_arr['potentialAction']['query-input']['valueName'] = 'search_term'; // Scope END: PropertyValueSpecification // $metadata_arr[] = '</span> <!-- Scope END: PropertyValueSpecification -->'; // Scope END: SearchAction // $metadata_arr[] = '</span> <!-- Scope END: SearchAction -->'; // Scope END: WebSite // $metadata_arr[] = '</span> <!-- Scope END: WebSite -->'; $metadata_arr = array($main_entity_arr, $website_arr); // Author archive } elseif (is_author()) { // Author object // NOTE: Inside the author archives `$post->post_author` does not contain the author object. // In this case the $post (get_queried_object()) contains the author object itself. // We also can get the author object with the following code. Slug is what WP uses to construct urls. // $author = get_user_by( 'slug', get_query_var( 'author_name' ) ); // Also, ``get_the_author_meta('....', $author)`` returns nothing under author archives. // Access user meta with: $author->description, $author->user_email, etc // $author = get_queried_object(); $author = $post; // Person // Scope BEGIN: Person: http://schema.org/Person // $metadata_arr[] = '<!-- Scope BEGIN: Person -->'; // $metadata_arr[] = '<span itemscope itemtype="http://schema.org/Person"' . amt_get_schemaorg_itemref('person_author') . '>'; $metadata_arr['@type'] = 'Person'; // headline - contains title information // NOTE: Not supported for person //$metadata_arr['headline'] = esc_attr( amt_get_title_for_metadata($options, $author) ); // Get author metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_author_metatags( $author->ID, $options ) ); $metadata_arr = array_merge($metadata_arr, amt_get_jsonld_schemaorg_author_array($author->ID, $options)); // mainEntityOfPage $metadata_arr['mainEntityOfPage'] = esc_url(get_author_posts_url($author->ID)); // Scope END: Person // $metadata_arr[] = '</span> <!-- Scope END: Person -->'; } elseif (amt_is_product()) { // Scope BEGIN: Product: http://schema.org/Product // $metadata_arr[] = '<!-- Scope BEGIN: Product -->'; // $metadata_arr[] = '<div itemscope itemtype="http://schema.org/Product"' . amt_get_schemaorg_itemref('product') . '>'; // Schema.org type $metadata_arr['@type'] = 'Product'; // ID $metadata_arr['@id'] = amt_get_schemaorg_entity_id('product'); // URL - Uses amt_get_permalink_for_multipage() $metadata_arr['url'] = esc_url_raw(amt_get_permalink_for_multipage($post)); // mainEntityOfPage $metadata_arr['mainEntityOfPage'] = esc_url(amt_get_permalink_for_multipage($post)); // name // Note: Contains multipage information through amt_process_paged() $metadata_arr['name'] = esc_attr(amt_process_paged(strip_tags(get_the_title($post->ID)))); // headline - contains title information //$metadata_arr['headline'] = esc_attr( amt_get_title_for_metadata($options, $post) ); // Description - We use the description defined by Add-Meta-Tags // Note: Contains multipage information through amt_process_paged() $content_desc = amt_get_content_description($post); //if ( empty($content_desc) ) { // // Use the post body as the description. Product objects do not support body text. // // TODO: ERROR here $post_body var does not exist // $content_desc = sanitize_text_field( amt_sanitize_description( $post_body ) ); //} if (!empty($content_desc)) { $metadata_arr['description'] = esc_attr(amt_process_paged($content_desc)); } // Dates $metadata_arr['releaseDate'] = esc_attr(amt_iso8601_date($post->post_date)); // Images $metadata_arr['image'] = array(); // First check if a global image override URL has been entered. // If yes, use this image URL and override all other images. $image_data = amt_get_image_data(amt_get_post_meta_image_url($post->ID)); if (!empty($image_data)) { $image_size = apply_filters('amt_image_size_product', 'full'); $image_meta_array = amt_get_jsonld_schemaorg_image_array($options, $image_data, $size = $image_size); if (!empty($image_meta_array)) { $metadata_arr['image'] = array(); $metadata_arr['image'][] = $image_meta_array; } //$global_image_override_url = amt_get_post_meta_image_url($post->ID); //if ( ! empty( $global_image_override_url ) ) { // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; // $current_image_obj = array(); // $current_image_obj['@type'] = 'ImageObject'; // $current_image_obj['url'] = esc_url_raw( $global_image_override_url ); // $current_image_obj['contentUrl'] = esc_url_raw( $global_image_override_url ); // $metadata_arr['image'][] = $current_image_obj; // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Further image processing } else { // Set to true if any image attachments are found. Use to finally add the default image // if no image attachments have been found. $has_images = false; // Scope BEGIN: ImageObject: http://schema.org/ImageObject // Image - Featured image is checked first, so that it can be the first associated image. if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) { // Get the image attachment object $image = get_post(get_post_thumbnail_id($post->ID)); // metadata BEGIN // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; // Allow filtering of the image size. $image_size = apply_filters('amt_image_size_product', 'full'); // Get image metatags. $metadata_arr['image'][] = amt_get_jsonld_schemaorg_image_array($options, $image, $size = $image_size); // metadata END // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Images have been found. $has_images = true; } // Scope END: ImageObject // If no images have been found so far use the default image, if set. // Scope BEGIN: ImageObject: http://schema.org/ImageObject if ($has_images === false) { $image_data = amt_get_default_image_data(); if (!empty($image_data)) { $image_size = apply_filters('amt_image_size_product', 'full'); $image_meta_array = amt_get_jsonld_schemaorg_image_array($options, $image_data, $size = $image_size); if (!empty($image_meta_array)) { $metadata_arr['image'] = array(); $metadata_arr['image'][] = $image_meta_array; } } // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; //$current_image_obj = array(); //$current_image_obj['@type'] = 'ImageObject'; //$current_image_obj['url'] = esc_url_raw( $options["default_image_url"] ); //$current_image_obj['contentUrl'] = esc_url_raw( $options["default_image_url"] ); //$metadata_arr['image'][] = $current_image_obj; // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; } // Scope END: ImageObject } // Extend the current metadata with properties of the Product object. // See: http://schema.org/Product $metadata_arr = apply_filters('amt_product_data_jsonld_schemaorg', $metadata_arr, $post); // Scope END: Product // $metadata_arr[] = '</div> <!-- Scope END: Product -->'; // Filtering of the generated Schema.org metadata $metadata_arr = apply_filters('amt_jsonld_schemaorg_metadata_product', $metadata_arr); // Add post body // Remove last closing '</div>' tag, add post body and re-add the closing div afterwards. // $closing_product_tag = array_pop($metadata_arr); // Product objects do not support a 'text' itemprop. We just add a div for now // for consistency with Article objects. // TODO: it should allow filtering '<div>' // $metadata_arr[] = '<div> <!-- Product text body: BEGIN -->'; // $metadata_arr[] = $post_body; // $metadata_arr[] = '</div> <!-- Product text body: END -->'; // Now add closing tag for Article // $metadata_arr[] = $closing_product_tag; // Attachemnts } elseif (is_attachment()) { $mime_type = get_post_mime_type($post->ID); //$attachment_type = strstr( $mime_type, '/', true ); // See why we do not use strstr(): http://www.codetrax.org/issues/1091 $attachment_type = preg_replace('#\\/[^\\/]*$#', '', $mime_type); // Early metatags - Scope starts if ('image' == $attachment_type) { // Scope BEGIN: ImageObject: http://schema.org/ImageObject // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<div itemscope itemtype="http://schema.org/ImageObject"' . amt_get_schemaorg_itemref('attachment_image') . '>'; } elseif ('video' == $attachment_type) { // Scope BEGIN: VideoObject: http://schema.org/VideoObject // $metadata_arr[] = '<!-- Scope BEGIN: VideoObject -->'; // $metadata_arr[] = '<div itemscope itemtype="http://schema.org/VideoObject"' . amt_get_schemaorg_itemref('attachment_video') . '>'; // Schema.org type $metadata_arr['@type'] = 'VideoObject'; } elseif ('audio' == $attachment_type) { // Scope BEGIN: AudioObject: http://schema.org/AudioObject // $metadata_arr[] = '<!-- Scope BEGIN: AudioObject -->'; // $metadata_arr[] = '<div itemscope itemtype="http://schema.org/AudioObject"' . amt_get_schemaorg_itemref('attachment_audio') . '>'; // Schema.org type $metadata_arr['@type'] = 'AudioObject'; } else { // we do not currently support other attachment types, so we stop processing here return array(); } // Metadata common to all attachments // Do not add a publisher on personal websites (static front page is source of author profile). if ($options['author_profile_source'] != 'frontpage' || !amt_has_page_on_front()) { // Publisher // Scope BEGIN: Organization: http://schema.org/Organization // $metadata_arr[] = '<!-- Scope BEGIN: Organization -->'; // $metadata_arr[] = '<span itemprop="publisher" itemscope itemtype="http://schema.org/Organization"' . amt_get_schemaorg_itemref('organization') . '>'; // Get publisher metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_publisher_metatags( $options, $post->post_author ) ); $metadata_arr['publisher'] = amt_get_jsonld_schemaorg_publisher_array($options, $post->post_author); // Scope END: Organization // $metadata_arr[] = '</span> <!-- Scope END: Organization -->'; } // Author // Scope BEGIN: Person: http://schema.org/Person // $metadata_arr[] = '<!-- Scope BEGIN: Person -->'; // $metadata_arr[] = '<span itemprop="author" itemscope itemtype="http://schema.org/Person"' . amt_get_schemaorg_itemref('person_author') . '>'; // Get author metatags $metadata_arr['author'] = amt_get_jsonld_schemaorg_author_array($post->post_author, $options); // Scope END: Person // $metadata_arr[] = '</span> <!-- Scope END: Person -->'; // name $metadata_arr['name'] = esc_attr(strip_tags(get_the_title($post->ID))); // headline - contains title information $metadata_arr['headline'] = esc_attr(amt_get_title_for_metadata($options, $post)); // Description - We use the description defined by Add-Meta-Tags $content_desc = amt_get_content_description($post); if (!empty($content_desc)) { $metadata_arr['description'] = esc_attr($content_desc); } // Dates $metadata_arr['datePublished'] = esc_attr(amt_iso8601_date($post->post_date)); $metadata_arr['dateModified'] = esc_attr(amt_iso8601_date($post->post_modified)); $metadata_arr['copyrightYear'] = esc_attr(mysql2date('Y', $post->post_date)); // Language $metadata_arr['inLanguage'] = esc_attr(str_replace('-', '_', amt_get_language_content($options, $post))); // Thumbnail // A featured image is supported by video and audio attachments. // If one is set, then it is set as the thumbnail of the video/audio object. if ('video' == $attachment_type || 'audio' == $attachment_type) { if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) { // Thumbnail URL of the featured image $image_size = apply_filters('amt_image_size_attachment', 'full'); $thumbnail_info = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), $image_size); $metadata_arr['thumbnailUrl'] = esc_url_raw($thumbnail_info[0]); // Currently we do not add a full ImageObject for the attachment's featured image. // TODO: future } } // mainEntityOfPage $metadata_arr['mainEntityOfPage'] = esc_url(get_permalink($post->ID)); // Metadata specific to each attachment type if ('image' == $attachment_type) { // Allow filtering of the image size. $image_size = apply_filters('amt_image_size_attachment', 'full'); // Get image metatags. $post is an image object. $metadata_arr = array_merge($metadata_arr, amt_get_jsonld_schemaorg_image_array($options, $post, $size = $image_size, $is_representative = true)); // Add the post body here // $metadata_arr[] = $post_body; // Scope END: ImageObject // $metadata_arr[] = '</div> <!-- Scope END: ImageObject -->'; } elseif ('video' == $attachment_type) { // Video specific metatags // URL (links to image file) //$metadata_arr['url'] = esc_url_raw( get_permalink( $post->ID ) ); $metadata_arr['url'] = esc_url_raw(wp_get_attachment_url($post->ID)); // sameAs (links to attachment page) $metadata_arr['sameAs'] = esc_url_raw(get_permalink($post->ID)); $metadata_arr['contentUrl'] = esc_url_raw(wp_get_attachment_url($post->ID)); $metadata_arr['encodingFormat'] = esc_attr($mime_type); // Required by Google $metadata_arr['uploadDate'] = esc_attr(amt_iso8601_date($post->post_date)); // Add the post body here // $metadata_arr[] = $post_body; // Scope END: VideoObject // $metadata_arr[] = '</div> <!-- Scope END: VideoObject -->'; } elseif ('audio' == $attachment_type) { // Audio specific metatags // URL (links to image file) //$metadata_arr['url'] = esc_url_raw( get_permalink( $post->ID ) ); $metadata_arr['url'] = esc_url_raw(wp_get_attachment_url($post->ID)); // sameAs (links to attachment page) $metadata_arr['sameAs'] = esc_url_raw(get_permalink($post->ID)); $metadata_arr['contentUrl'] = esc_url_raw(wp_get_attachment_url($post->ID)); $metadata_arr['encodingFormat'] = esc_attr($mime_type); // Add the post body here // $metadata_arr[] = $post_body; // Scope END: AudioObject // $metadata_arr[] = '</div> <!-- Scope END: AudioObject -->'; } // Filtering of the generated Schema.org metadata $metadata_arr = apply_filters('amt_jsonld_schemaorg_metadata_attachment', $metadata_arr); // Content // Posts, pages, custom content types (attachments excluded, caught in previous clause) // Note: content might be multipage. Process with amt_process_paged() wherever needed. } elseif (is_singular()) { // Set main metadata entity. By default this set to Article. $main_content_object = 'Article'; // Check for Page // Main entity is set to WebPage on pages // DEV NOTE: Since many themes already set the WebPage itemscope on the // body element of the web page, set it to WebPage automatically would // result in duplicate entities. So this has to be done manually via // a filtering function. // if ( is_page() ) { // $main_content_object = 'WebPage'; // } // Check for Review $review_data = amt_get_review_data($post); if (!empty($review_data)) { $main_content_object = 'Review'; } // Allow filtering the main metadata object for content. $main_content_object = apply_filters('amt_schemaorg_object_main', $main_content_object); // Scope BEGIN: Article: http://schema.org/Article // $metadata_arr[] = '<!-- Scope BEGIN: ' . esc_attr($main_content_object) . ' -->'; // $metadata_arr[] = '<div itemscope itemtype="http://schema.org/' . esc_attr($main_content_object) . '"' . amt_get_schemaorg_itemref('content') . '>'; // Schema.org type $metadata_arr['@type'] = esc_attr($main_content_object); // Do not add a publisher on personal websites (static front page is source of author profile). if ($options['author_profile_source'] != 'frontpage' || !amt_has_page_on_front()) { // Publisher // Scope BEGIN: Organization: http://schema.org/Organization // $metadata_arr[] = '<!-- Scope BEGIN: Organization -->'; // $metadata_arr[] = '<span itemprop="publisher" itemscope itemtype="http://schema.org/Organization"' . amt_get_schemaorg_itemref('organization') . '>'; // Get publisher metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_publisher_metatags( $options, $post->post_author ) ); $metadata_arr['publisher'] = amt_get_jsonld_schemaorg_publisher_array($options, $post->post_author); // Scope END: Organization // $metadata_arr[] = '</span> <!-- Scope END: Organization -->'; } // Author // Scope BEGIN: Person: http://schema.org/Person // $metadata_arr[] = '<!-- Scope BEGIN: Person -->'; // $metadata_arr[] = '<span itemprop="author" itemscope itemtype="http://schema.org/Person"' . amt_get_schemaorg_itemref('person_author') . '>'; // Get author metatags // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_author_metatags( $post->post_author, $options ) ); $metadata_arr['author'] = amt_get_jsonld_schemaorg_author_array($post->post_author, $options); // Scope END: Person // $metadata_arr[] = '</span> <!-- Scope END: Person -->'; // URL - Uses amt_get_permalink_for_multipage() $metadata_arr['url'] = esc_url_raw(amt_get_permalink_for_multipage($post)); // mainEntityOfPage $metadata_arr['mainEntityOfPage'] = esc_url(amt_get_permalink_for_multipage($post)); // Dates $metadata_arr['datePublished'] = esc_attr(amt_iso8601_date($post->post_date)); $metadata_arr['dateModified'] = esc_attr(amt_iso8601_date($post->post_modified)); $metadata_arr['copyrightYear'] = esc_attr(mysql2date('Y', $post->post_date)); // Language $metadata_arr['inLanguage'] = esc_attr(str_replace('-', '_', amt_get_language_content($options, $post))); // name // Note: Contains multipage information through amt_process_paged() $metadata_arr['name'] = esc_attr(amt_process_paged(strip_tags(get_the_title($post->ID)))); // headline - contains title information $metadata_arr['headline'] = esc_attr(amt_get_title_for_metadata($options, $post)); // Description - We use the description defined by Add-Meta-Tags // Note: Contains multipage information through amt_process_paged() $content_desc = amt_get_content_description($post); if (!empty($content_desc)) { $metadata_arr['description'] = esc_attr(amt_process_paged($content_desc)); } /* // Section: We use the first category as the section $first_cat = sanitize_text_field( amt_sanitize_keywords( amt_get_first_category($post) ) ); if (!empty($first_cat)) { $metadata_arr[] = '<meta itemprop="articleSection" content="' . esc_attr( $first_cat ) . '" />'; } */ // Add articleSection in Article object only. if ($main_content_object == 'Article') { $categories = get_the_category($post->ID); $categories = apply_filters('amt_post_categories_for_schemaorg', $categories); foreach ($categories as $cat) { $section = trim($cat->cat_name); if (!empty($section) && $cat->slug != 'uncategorized') { $metadata_arr['articleSection'] = esc_attr($section); } } } // Add review properties if Review if ($main_content_object == 'Review') { // $metadata_arr[] = '<!-- Review Information BEGIN -->'; // $metadata_arr[] = amt_get_review_info_box( $review_data ); // $metadata_arr[] = '<!-- Review Information END -->'; // Reviewed Item $metadata_arr['itemReviewed'] = array(); $metadata_arr['itemReviewed']['@type'] = esc_attr($review_data['object']); $metadata_arr['itemReviewed']['name'] = esc_attr($review_data['name']); $metadata_arr['itemReviewed']['sameAs'] = esc_url_raw($review_data['sameAs']); // Extra properties of reviewed item foreach ($review_data['extra'] as $key => $value) { if (is_array($value)) { // Add sub entity // If it is an array, the 'object' property is mandatory if (!array_key_exists('object', $value)) { continue; } $metadata_arr['itemReviewed'][esc_attr($key)] = array(); $metadata_arr['itemReviewed'][esc_attr($key)]['@type'] = esc_attr($value['object']); foreach ($value as $subkey => $subvalue) { if ($subkey != 'object') { if (in_array($subkey, array('url', 'sameAs'))) { $metadata_arr['itemReviewed'][esc_attr($key)][esc_attr($subkey)] = esc_url_raw($subvalue); } else { $metadata_arr['itemReviewed'][esc_attr($key)][esc_attr($subkey)] = esc_attr($subvalue); } } } } else { // Add simple meta element $metadata_arr['itemReviewed'][esc_attr($key)] = esc_attr($value); } } // Rating $metadata_arr['reviewRating'] = array(); $metadata_arr['reviewRating']['@type'] = 'Rating'; $metadata_arr['reviewRating']['ratingValue'] = esc_attr($review_data['ratingValue']); $bestrating = apply_filters('amt_schemaorg_review_bestrating', '5'); $metadata_arr['reviewRating']['bestRating'] = esc_attr($bestrating); } // Keywords - We use the keywords defined by Add-Meta-Tags $keywords = amt_get_content_keywords($post); if (!empty($keywords)) { $metadata_arr['keywords'] = esc_attr($keywords); } // Referenced Items $referenced_url_list = amt_get_referenced_items($post); if (!empty($referenced_url_list)) { $metadata_arr['referencedItem'] = array(); foreach ($referenced_url_list as $referenced_url) { $referenced_url = trim($referenced_url); if (!empty($referenced_url)) { $metadata_arr['referencedItem'][] = esc_url_raw($referenced_url); } } } // Images $metadata_arr['image'] = array(); // First check if a global image override URL has been entered. // If yes, use this image URL and override all other images. $image_data = amt_get_image_data(amt_get_post_meta_image_url($post->ID)); if (!empty($image_data)) { $image_size = apply_filters('amt_image_size_content', 'full'); $image_meta_array = amt_get_jsonld_schemaorg_image_array($options, $image_data, $size = $image_size); if (!empty($image_meta_array)) { $metadata_arr['image'] = array(); $metadata_arr['image'][] = $image_meta_array; } //$global_image_override_url = amt_get_post_meta_image_url($post->ID); //if ( ! empty( $global_image_override_url ) ) { // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; // $current_image_obj = array(); // $current_image_obj['@type'] = 'ImageObject'; // $current_image_obj['url'] = esc_url_raw( $global_image_override_url ); // $current_image_obj['contentUrl'] = esc_url_raw( $global_image_override_url ); // $metadata_arr['image'][] = $current_image_obj; // $metadata_arr[] = '<meta itemprop="contentUrl" content="' . esc_url_raw( $global_image_override_url ) . '" />'; // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Further image processing } else { // Media Limits $image_limit = amt_metadata_get_image_limit($options); $video_limit = amt_metadata_get_video_limit($options); $audio_limit = amt_metadata_get_audio_limit($options); // Counters $ic = 0; // image counter $vc = 0; // video counter $ac = 0; // audio counter // We store the featured image ID in this variable so that it can easily be excluded // when all images are parsed from the $attachments array. $featured_image_id = 0; // Set to true if any image attachments are found. Use to finally add the default image // if no image attachments have been found. $has_images = false; // Scope BEGIN: ImageObject: http://schema.org/ImageObject // Image - Featured image is checked first, so that it can be the first associated image. if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) { // Thumbnail URL // First add the thumbnail URL of the featured image $thumbnail_info = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); $metadata_arr['thumbnailUrl'] = esc_url_raw($thumbnail_info[0]); // Add full image object for featured image. // Get the image attachment object $image = get_post(get_post_thumbnail_id($post->ID)); // metadata BEGIN // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; // Allow filtering of the image size. $image_size = apply_filters('amt_image_size_content', 'full'); // Get image metatags. // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_image_metatags( $options, $image, $size=$image_size ) ); $metadata_arr['image'][] = amt_get_jsonld_schemaorg_image_array($options, $image, $size = $image_size); // metadata END // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Finally, set the $featured_image_id $featured_image_id = get_post_thumbnail_id($post->ID); // Images have been found. $has_images = true; // Increase image counter $ic++; } // Scope END: ImageObject // Process all attachments and add metatags (featured image will be excluded) foreach ($attachments as $attachment) { // Excluded the featured image since if ($attachment->ID != $featured_image_id) { $mime_type = get_post_mime_type($attachment->ID); //$attachment_type = strstr( $mime_type, '/', true ); // See why we do not use strstr(): http://www.codetrax.org/issues/1091 $attachment_type = preg_replace('#\\/[^\\/]*$#', '', $mime_type); if ('image' == $attachment_type && $ic < $image_limit) { // metadata BEGIN // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; // Allow filtering of the image size. $image_size = apply_filters('amt_image_size_content', 'full'); // Get image metatags. // $metadata_arr = array_merge( $metadata_arr, amt_get_schemaorg_image_metatags( $options, $attachment, $size=$image_size ) ); $metadata_arr['image'][] = amt_get_jsonld_schemaorg_image_array($options, $attachment, $size = $image_size); // metadata END // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Images have been found. $has_images = true; // Increase image counter $ic++; } elseif ('video' == $attachment_type && $vc < $video_limit) { // Scope BEGIN: VideoObject: http://schema.org/VideoObject // $metadata_arr[] = '<!-- Scope BEGIN: VideoObject -->'; // $metadata_arr[] = '<span itemprop="video" itemscope itemtype="http://schema.org/VideoObject">'; // Video specific metatags // URL (for attachments: links to attachment page) $current_video_obj = array(); $current_video_obj['@type'] = 'VideoObject'; // URL (links to image file) //$current_video_obj['url'] = esc_url_raw( get_permalink( $attachment->ID ) ); $current_video_obj['url'] = esc_url_raw(wp_get_attachment_url($attachment->ID)); // sameAs (links to attachment page) $current_video_obj['sameAs'] = esc_url_raw(get_permalink($attachment->ID)); $current_video_obj['contentUrl'] = esc_url_raw(wp_get_attachment_url($attachment->ID)); $current_video_obj['encodingFormat'] = esc_attr($mime_type); // name $current_video_obj['name'] = esc_attr(strip_tags(get_the_title($attachment->ID))); // Description - We use the description defined by Add-Meta-Tags $content_desc = amt_get_content_description($attachment); if (!empty($content_desc)) { $current_video_obj['description'] = esc_attr($content_desc); } // Thumbnail // A featured image is supported by video and audio attachments. // If one is set, then it is set as the thumbnail of the video/audio object. if (function_exists('has_post_thumbnail') && has_post_thumbnail($attachment->ID)) { // Thumbnail URL of the featured image $image_size = apply_filters('amt_image_size_content', 'full'); $thumbnail_info = wp_get_attachment_image_src(get_post_thumbnail_id($attachment->ID), $image_size); $current_video_obj['thumbnailUrl'] = esc_url_raw($thumbnail_info[0]); // Currently we do not add a full ImageObject for the attachment's featured image. // TODO: future } // uploadDate $current_video_obj['uploadDate'] = esc_attr(amt_iso8601_date($attachment->post_date)); $metadata_arr['video'][] = $current_video_obj; // Scope END: VideoObject // $metadata_arr[] = '</span> <!-- Scope END: VideoObject -->'; // Increase video counter $vc++; } elseif ('audio' == $attachment_type && $ac < $audio_limit) { // Scope BEGIN: AudioObject: http://schema.org/AudioObject // $metadata_arr[] = '<!-- Scope BEGIN: AudioObject -->'; // $metadata_arr[] = '<span itemprop="audio" itemscope itemtype="http://schema.org/AudioObject">'; // Audio specific metatags // URL (for attachments: links to attachment page) $current_audio_obj = array(); $current_audio_obj['@type'] = 'AudioObject'; // URL (links to image file) //$current_audio_obj['url'] = esc_url_raw( get_permalink( $attachment->ID ) ); $current_audio_obj['url'] = esc_url_raw(wp_get_attachment_url($attachment->ID)); // sameAs (links to attachment page) $current_audio_obj['sameAs'] = esc_url_raw(get_permalink($attachment->ID)); $current_audio_obj['contentUrl'] = esc_url_raw(wp_get_attachment_url($attachment->ID)); $current_audio_obj['encodingFormat'] = esc_attr($mime_type); // name $current_audio_obj['name'] = esc_attr(strip_tags(get_the_title($attachment->ID))); // Description - We use the description defined by Add-Meta-Tags $content_desc = amt_get_content_description($attachment); if (!empty($content_desc)) { $current_audio_obj['description'] = esc_attr($content_desc); } // Thumbnail // A featured image is supported by video and audio attachments. // If one is set, then it is set as the thumbnail of the video/audio object. if (function_exists('has_post_thumbnail') && has_post_thumbnail($attachment->ID)) { // Thumbnail URL of the featured image $image_size = apply_filters('amt_image_size_content', 'full'); $thumbnail_info = wp_get_attachment_image_src(get_post_thumbnail_id($attachment->ID), $image_size); $current_audio_obj['thumbnailUrl'] = esc_url_raw($thumbnail_info[0]); // Currently we do not add a full ImageObject for the attachment's featured image. // TODO: future } // uploadDate $current_audio_obj['uploadDate'] = esc_attr(amt_iso8601_date($attachment->post_date)); $metadata_arr['audio'][] = $current_audio_obj; // Scope END: AudioObject // $metadata_arr[] = '</span> <!-- Scope END: AudioObject -->'; // Increase audio counter $ac++; } } } // Embedded Media foreach ($embedded_media['images'] as $embedded_item) { if ($ic == $image_limit) { break; } // Scope BEGIN: ImageObject: http://schema.org/ImageObject // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; $current_image_obj = array(); $current_image_obj['@type'] = 'ImageObject'; // name (title) $current_image_obj['name'] = esc_attr($embedded_item['alt']); // caption $current_image_obj['caption'] = esc_attr($embedded_item['alt']); // alt $current_image_obj['text'] = esc_attr($embedded_item['alt']); // URL (links to image file) //$current_image_obj['url'] = esc_url_raw( $embedded_item['page'] ); $current_image_obj['url'] = esc_url_raw($embedded_item['image']); // sameAs (links to attachment page) $current_image_obj['sameAs'] = esc_url_raw($embedded_item['page']); // thumbnail url $current_image_obj['thumbnailUrl'] = esc_url_raw($embedded_item['thumbnail']); // main image $current_image_obj['contentUrl'] = esc_url_raw($embedded_item['image']); if (apply_filters('amt_extended_image_tags', true)) { $current_image_obj['width'] = esc_attr($embedded_item['width']); $current_image_obj['height'] = esc_attr($embedded_item['height']); $current_image_obj['encodingFormat'] = 'image/jpeg'; } // embedURL $current_image_obj['embedURL'] = esc_url_raw($embedded_item['player']); $metadata_arr['image'][] = $current_image_obj; // Scope END: ImageObject // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; // Images have been found. $has_images = true; // Increase image counter $ic++; } foreach ($embedded_media['videos'] as $embedded_item) { if ($vc == $video_limit) { break; } // Scope BEGIN: VideoObject: http://schema.org/VideoObject // See: http://googlewebmastercentral.blogspot.gr/2012/02/using-schemaorg-markup-for-videos.html // See: https://support.google.com/webmasters/answer/2413309?hl=en // $metadata_arr[] = '<!-- Scope BEGIN: VideoObject -->'; // $metadata_arr[] = '<span itemprop="video" itemscope itemtype="http://schema.org/VideoObject">'; $current_video_obj = array(); // Video Embed URL $current_video_obj['embedURL'] = esc_url_raw($embedded_item['player']); // playerType $current_video_obj['playerType'] = 'application/x-shockwave-flash'; // size $current_video_obj['width'] = esc_attr($embedded_item['width']); $current_video_obj['height'] = esc_attr($embedded_item['height']); $metadata_arr['video'][] = $current_video_obj; // Scope END: VideoObject // $metadata_arr[] = '</span> <!-- Scope END: VideoObject -->'; // Increase video counter $vc++; } foreach ($embedded_media['sounds'] as $embedded_item) { if ($ac == $audio_limit) { break; } // Scope BEGIN: AudioObject: http://schema.org/AudioObject // $metadata_arr[] = '<!-- Scope BEGIN: AudioObject -->'; // $metadata_arr[] = '<span itemprop="audio" itemscope itemtype="http://schema.org/AudioObject">'; $current_audio_obj = array(); // Audio Embed URL $current_audio_obj['embedURL'] = esc_url_raw($embedded_item['player']); // playerType $current_audio_obj['playerType'] = 'application/x-shockwave-flash'; $metadata_arr['audio'][] = $current_audio_obj; // Scope END: AudioObject // $metadata_arr[] = '</span> <!-- Scope END: AudioObject -->'; // Increase audio counter $ac++; } // If no images have been found so far use the default image, if set. // Scope BEGIN: ImageObject: http://schema.org/ImageObject if ($has_images === false) { $image_data = amt_get_default_image_data(); if (!empty($image_data)) { $image_size = apply_filters('amt_image_size_content', 'full'); $image_meta_array = amt_get_jsonld_schemaorg_image_array($options, $image_data, $size = $image_size); if (!empty($image_meta_array)) { $metadata_arr['image'] = array(); $metadata_arr['image'][] = $image_meta_array; } } // $metadata_arr[] = '<!-- Scope BEGIN: ImageObject -->'; // $metadata_arr[] = '<span itemprop="image" itemscope itemtype="http://schema.org/ImageObject">'; $current_image_obj = array(); $current_image_obj['@type'] = 'ImageObject'; $current_image_obj['url'] = esc_url_raw($options["default_image_url"]); $current_image_obj['contentUrl'] = esc_url_raw($options["default_image_url"]); $metadata_arr['image'][] = $current_image_obj; // $metadata_arr[] = '<meta itemprop="contentUrl" content="' . esc_url_raw( $options["default_image_url"] ) . '" />'; // $metadata_arr[] = '</span> <!-- Scope END: ImageObject -->'; } // Scope END: ImageObject } // Article Body // The article body is added after filtering the generated microdata below. // TODO: also check: comments, contributor, copyrightHolder, , creator, dateCreated, discussionUrl, editor, version (use post revision if possible) // Scope END: Article // $metadata_arr[] = '</div> <!-- Scope END: ' . esc_attr($main_content_object) . ' -->'; // Filtering of the generated Schema.org metadata $metadata_arr = apply_filters('amt_jsonld_schemaorg_metadata_content', $metadata_arr); // Add articleBody to Artice // Now add the article. Remove last closing '</span>' tag, add articleBody and re-add the closing span afterwards. // $closing_article_tag = array_pop($metadata_arr); // Use the 'text' itemprop by default for the main text body of the CreativeWork, // so it can be used by more subtypes than Article. // But set it explicitly to 'articleBody if the main entiry is 'Article' // or 'reviewBody' if the main entity is a 'Review'. $main_text_property = 'text'; if ($main_content_object == 'Article') { $main_text_property = 'articleBody'; } elseif ($main_content_object == 'Review') { $main_text_property = 'reviewBody'; } // Allow filtering of the main text property. $main_text_property = apply_filters('amt_schemaorg_property_main_text', $main_text_property); // $metadata_arr[] = '<div itemprop="' . esc_attr($main_text_property) . '">'; // Add main content //$metadata_arr[ esc_attr($main_text_property) ] = $post->post_content; // $metadata_arr[] = $post_body; // $metadata_arr[] = '</div> <!-- Itemprop END: ' . esc_attr($main_text_property) . ' -->'; // Now add closing tag for Article // $metadata_arr[] = $closing_article_tag; } // Add our comment // if ( count( $metadata_arr ) > 0 ) { // array_unshift( $metadata_arr, "<!-- BEGIN Schema.org microdata added by Add-Meta-Tags WordPress plugin -->" ); // array_unshift( $metadata_arr, "" ); // Intentionaly left empty // array_push( $metadata_arr, "<!-- END Schema.org microdata added by Add-Meta-Tags WordPress plugin -->" ); // array_push( $metadata_arr, "" ); // Intentionaly left empty // } //return $post_body; // return implode( PHP_EOL, $metadata_arr ); // Filtering of the generated microdata for footer $metadata_arr = apply_filters('amt_jsonld_schemaorg_metadata_head', $metadata_arr); // if ( count( $metadata_arr ) > 0 ) { // array_unshift( $metadata_arr, '<script type="application/ld+json">' ); // array_unshift( $metadata_arr, "" ); // Intentionaly left empty // array_push( $metadata_arr, '</script>' ); // array_push( $metadata_arr, "" ); // Intentionaly left empty // } // return $metadata_arr; if (count($metadata_arr) > 1) { // contains @context by default return array('<script type="application/ld+json">', 'json+ld_data' => json_encode($metadata_arr), '</script>'); } else { return array(); } }
function amt_options_page() { // Permission Check if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } // Default Add-Meta-Tags Settings $default_options = amt_get_default_options(); if (isset($_POST['info_update'])) { // Save the Add-Meta-Tags settings amt_save_settings($_POST); // Also, since it may happen that the rewrite rules have not been flushed // this is a good place to do it. flush_rewrite_rules(); } elseif (isset($_POST["info_reset"])) { amt_reset_settings(); } // Get the options from the DB. $options = get_option("add_meta_tags_opts"); //var_dump($options); /* Configuration Page */ print ' <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div> <h2>' . __('Metadata Settings', 'add-meta-tags') . '</h2> <p>' . __('Welcome to the administration panel of the Add-Meta-Tags plugin.', 'add-meta-tags') . '</p> <p>' . __('<em>Metadata</em> refers to information that describes the content in a machine-friendly way. Search engines and other online services use this metadata to better understand your content. Keep in mind that metadata itself does not automatically make your blog rank better. For this to happen the content is still required to meet various quality standards. However, the presence of accurate and adequate metadata gives search engines and other services the chance to make less guesses about your content, index and categorize it better and, eventually, deliver it to an audience that finds it useful. Good metadata facilitates this process and thus plays a significant role in achieving better rankings. This is what the Add-Meta-Tags plugin does.', 'add-meta-tags') . '</p> </div> <div class="wrap" style="background: #EEF6E6; padding: 1em 2em; border: 1px solid #E4E4E4;' . ($options["i_have_donated"] == "1" ? ' display: none;' : '') . '"> <h2>' . __('Message from the author', 'add-meta-tags') . '</h2> <p style="font-size: 1.2em; padding-left: 2em;"><em>Add-Meta-Tags</em> is released under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License version 2</a> and, therefore, is <strong>Free software</strong>.</p> <p style="font-size: 1.2em; padding-left: 2em;">However, a significant amount of <strong>time</strong> and <strong>energy</strong> has been put into developing this plugin, so, its production has not been free from cost. If you find this plugin useful and if it has helped your blog get indexed better and rank higher, I would appreciate an <a href="http://bit.ly/HvUakt">extra cup of coffee</a>.</p> <!-- <p style="font-size: 1.2em; padding-left: 2em;">Donations in the following crypto currencies are also accepted and welcome. Send coins to the following addresses:</p> <ul style="font-size: 1.2em; padding-left: 2em;"> <li style="padding-left: 1em;">- BitCoin (BTC): <code style="font-size: 1.2em;">1KkgpmaBKqQVk643VRhFRkL19Bbci4Mwn9</code></li> <li style="padding-left: 1em;">- LiteCoin (LTC): <code style="font-size: 1.2em;">LS8UF39LfLahzGo49y736ooRYBVT1zZ2Fa</code></li> </ul> --> <p style="font-size: 1.2em; padding-left: 2em;">Thank you in advance,<br />George Notaras</p> <div style="text-align: right;"><small>' . __('This message can be deactivated in the settings below.', 'add-meta-tags') . '</small></div> </div> <div class="wrap"> <h2>' . __('How it works', 'add-meta-tags') . '</h2> <p>' . __('Add-Meta-Tags tries to follow the "<em>It just works</em>" principal. By default, the <em>description</em> and <em>keywords</em> meta tags are added to the front page, posts, pages, public custom post types, attachment pages, category, tag, custom taxonomy and author based archives. Furthermore, it is possible to enable the generation of <em>Opengraph</em>, <em>Dublin Core</em>, <em>Twitter Cards</em> and <em>Schema.org</em> metadata. The plugin also supports some extra SEO related functionality that helps you fine tune your web site.', 'add-meta-tags') . '</p> <p>' . __('The automatically generated metadata can be further customized for each individual post, page, or any public custom post type directly from the <em>Metadata</em> box inside the post editing panel. If the <em>Metadata</em> box is not visible, you probably need to enable it at the <a href="http://en.support.wordpress.com/screen-options/">Screen Options</a> of the post editing panel.', 'add-meta-tags') . '</p> <p>' . __('Apart from the customization through the WordPress administration interface, the generated metadata and specific aspects of the plugin\'s functionality can be further customized to a great extent programmatically. Read the technical notes at the <a href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki" title="Add-Meta-Tags Development web site">development web site</a> and find ready sample code snippets for commonly needed customizations in the <a href="http://www.codetrax.org/projects/wp-add-meta-tags/wiki/Add-Meta-Tags_Cookbook" title="Add-Meta-Tags Cookbook">Add-Meta-Tags Cookbook</a>.', 'add-meta-tags') . '</p> </div> <div class="wrap"> <h2>' . __('Configuration', 'add-meta-tags') . '</h2> <p>' . __('This section contains global configuration options for the metadata that is added to your web site.', 'add-meta-tags') . '</p> <form name="formamt" method="post" action="' . admin_url('options-general.php?page=add-meta-tags-options') . '"> <table class="form-table"> <tbody> '; if (amt_has_page_on_front()) { /* Options: Example No pages +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | posts | yes | | 93 | page_for_posts | 0 | yes | | 94 | page_on_front | 0 | yes | +-----------+----------------+--------------+----------+ Example pages as front page and posts page +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | page | yes | | 93 | page_for_posts | 28 | yes | | 94 | page_on_front | 25 | yes | +-----------+----------------+--------------+----------+ */ print ' <tr valign="top"> <th scope="row">' . __('Front Page Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Metadata', 'add-meta-tags') . '</span></legend> ' . __('It appears that you use static pages on the <em>front page</em> and the <em>latest posts page</em> of this web site. Please visit the editing panel of these pages and set the <code>description</code> and the <code>keywords</code> meta tags in the relevant Metadata box.', 'add-meta-tags') . ' '; print '<ul>'; $front_page_id = get_option('page_on_front'); if (intval($front_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">front page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($front_page_id))); } $posts_page_id = get_option('page_for_posts'); if (intval($posts_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">posts page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($posts_page_id))); } print '</ul>'; print ' </fieldset> </td> </tr> '; } else { print ' <tr valign="top"> <th scope="row">' . __('Front Page Description', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Description', 'add-meta-tags') . '</span></legend> <textarea name="site_description" id="site_description" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_description($options))) . '</textarea> <br /> <label for="site_description"> ' . __('Enter a short (150-250 characters long) description of your blog. This text will be used in the <em>description</em> and other similar metatags on the <strong>front page</strong>. If this is left empty, then the blog\'s <em>Tagline</em> from the <a href="options-general.php">General Options</a> will be used.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Front Page Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Keywords', 'add-meta-tags') . '</span></legend> <textarea name="site_keywords" id="site_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_keywords($options))) . '</textarea> <br /> <label for="site_keywords">' . __('Enter a comma-delimited list of keywords for your blog. These keywords will be used in the <em>keywords</em> meta tag on the <strong>front page</strong>. If this field is left empty, then all of your blog\'s <a href="edit-tags.php?taxonomy=category">categories</a> will be used as keywords for the <em>keywords</em> meta tag.', 'add-meta-tags') . '</label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>' . __('keyword1, keyword2, keyword3', 'add-meta-tags') . '</code></p> <br /> </fieldset> </td> </tr> '; } print ' <tr valign="top"> <th scope="row">' . __('Global Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Global Keywords', 'add-meta-tags') . '</span></legend> <textarea name="global_keywords" id="global_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_global_keywords($options))) . '</textarea> <br /> <label for="global_keywords">' . __('Enter a comma-delimited list of global keywords which will be added before the keywords of <strong>all</strong> posts and pages.', 'add-meta-tags') . '</label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>' . __('keyword1, keyword2, keyword3', 'add-meta-tags') . '</code></p> <br /> <p>' . __('By default, these keywords are prepended to the post/page\'s keywords. For enhanced flexibility, it is possible to use the <code>%contentkw%</code> placeholder, which will be populated with the post/page\'s autogenerated or user-defined keywords. This way you can globally both prepend and append keywords to the <em>keywords</em> of your content.', 'add-meta-tags') . '</p> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>' . __('keyword1, keyword2, %contentkw%, keyword3', 'add-meta-tags') . '</code></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Site-wide META tags', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Site-wide META tags', 'add-meta-tags') . '</span></legend> <textarea name="site_wide_meta" id="site_wide_meta" cols="100" rows="10" class="code">' . stripslashes($options["site_wide_meta"]) . '</textarea> <br /> <label for="site_wide_meta"> ' . __('Provide the full XHTML code of extra META elements you would like to add to all the pages of your web site (read more about the <a href="http://en.wikipedia.org/wiki/Meta_element" target="_blank">META HTML element</a> on Wikipedia).', 'add-meta-tags') . ' </label> <p><strong>' . __('Examples', 'add-meta-tags') . '</strong>:</p> <p><code><meta name="google-site-verification" content="1234567890" /></code></p> <p><code><meta name="msvalidate.01" content="1234567890" /></code></p> <p><code><meta name="robots" content="noimageindex" /></code></p> <p><code><meta property="fb:admins" content="1234" /></code></p> <p><code><meta property="fb:app_id" content="4321" /></code></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Publisher Settings', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Publisher Settings', 'add-meta-tags') . '</span></legend> <p>' . __('This section contains options related to your web site; the publisher of the content.', 'add-meta-tags') . '</p> <p>' . __('The following publisher related settings are shared among all users. Filling in these settings is entirely optional.', 'add-meta-tags') . '</p> <h4>' . __('Facebook publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_publisher_profile_url" type="text" id="social_main_facebook_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_facebook_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_publisher_profile_url"> ' . __('Enter an absolute URL to the Facebook profile of the publisher. If this is filled in, it will be used in the <code>article:publisher</code> meta tag.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://www.facebook.com/awesome.editors</code></p> <br /> <!-- We currently let users add the full meta tags for fb:app_id and fb:admins in the site wide meta tags box. <h4>' . __('Facebook App ID', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_app_id" type="text" id="social_main_facebook_app_id" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_app_id"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_app_id"> ' . __('Enter the App ID for <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1234567890</code></p> <br /> <h4>' . __('Facebook Admin ID list', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_admins" type="text" id="social_main_facebook_admins" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_admins"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_admins"> ' . __('Enter a comma delimited list of numerical Facebook user IDs which will have access to <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1111111111,2222222222</code></p> <br /> --> <h4>' . __('Google+ publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_googleplus_publisher_profile_url" type="text" id="social_main_googleplus_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_googleplus_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_googleplus_publisher_profile_url"> ' . __('Enter an absolute URL to the Google+ profile of the publisher. If this is filled in, it will be used in the link with <code>rel="publisher"</code> in the HEAD area of the web page.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://plus.google.com/+AwesomeEditors/</code></p> <br /> <h4>' . __('Twitter publisher username', 'add-meta-tags') . ':</h4> <input name="social_main_twitter_publisher_username" type="text" id="social_main_twitter_publisher_username" class="code" value="' . esc_attr(stripslashes($options["social_main_twitter_publisher_username"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_twitter_publisher_username"> ' . __('Enter the Twitter username of the publisher (without @).', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>AwesomeEditors</code></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Basic Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Basic Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_description" type="checkbox" value="1" name="auto_description" ' . ($options["auto_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_description">' . __('Automatically generate the <em>description</em> meta tag.', 'add-meta-tags') . '</label> <p>' . __('If this option is enabled, the <em>description</em> meta tag is automatically generated for the content, attachments and archives. Customization of the <em>description</em> meta tag is possible through the <em>Metadata</em> box in the post editing screen.', 'add-meta-tags') . '</p> <br /> <input id="auto_keywords" type="checkbox" value="1" name="auto_keywords" ' . ($options["auto_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_keywords">' . __('Automatically generate the <em>keywords</em> meta tag.', 'add-meta-tags') . '</label> <p>' . __('If this option is enabled, the <em>keywords</em> meta tag is automatically generated for the content and archives. Keywords are not generated automatically on pages and attachments. Customization of the <em>keywords</em> meta tag is possible through the <em>Metadata</em> box in the post editing screen.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Opengraph Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Opengraph Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_opengraph" type="checkbox" value="1" name="auto_opengraph" ' . ($options["auto_opengraph"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_opengraph">' . __('Automatically generate Opengraph meta tags.', 'add-meta-tags') . '</label> <p>' . __('If this option is enabled, Opengraph metadata is automatically generated for content, attachments and archives. For more information, please refer to the <a href="http://ogp.me">Opengraph specification</a>.', 'add-meta-tags') . '</p> <br /> <input id="og_omit_video_metadata" type="checkbox" value="1" name="og_omit_video_metadata" ' . ($options["og_omit_video_metadata"] == "1" ? 'checked="checked"' : '') . '" /> <label for="og_omit_video_metadata">' . __('Omit <code>og:video</code> meta tags.', 'add-meta-tags') . '</label> <p>' . __('When a post containing a video is shared on Facebook, Facebook uses its own player to embed the video in the timeline. If this setting is enabled, <code>og:video</code> meta tags are no longer generated and Facebook, instead of embedding your video, links to your actual video post.', 'add-meta-tags') . '</p> <br /> <h4>' . __('Important Note', 'add-meta-tags') . '</h4> <p>' . __('By default, this feature sets the URL of the front page of your web site to the <code>article:publisher</code> meta tag and the URL of the author archive to the <code>article:author</code> meta tag. In order to link to the publisher page and the author profile on Facebook, it is required to provide the respective URLs. These settings can be added to your WordPress user <a href="profile.php">profile page</a> under the section <em>Contact Info</em>. Filling in the publisher profile URL is not required, if it has already been entered in the <em>Publisher Settings</em> above. For example:', 'add-meta-tags') . '</p> <blockquote>Facebook author profile URL (AMT): <code>https://www.facebook.com/john.smith</code></blockquote> <blockquote>Facebook publisher profile URL (AMT): <code>https://www.facebook.com/awesome.editors</code></blockquote> <p>' . __('It is possible to control the value of the <code>og:type</code> meta tag either by changing the post format or programmatically via a filter. By default, the <code>og:type</code> is set to <code>article</code> for all content, except for video attachment pages and posts whose post format has been set to <code>video</code>, on which <code>og:type</code> is set to <code>video.other</code>.', 'add-meta-tags') . '</p> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Twitter Cards Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Twitter Cards Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_twitter" type="checkbox" value="1" name="auto_twitter" ' . ($options["auto_twitter"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_twitter">' . __('Automatically generate Twitter Cards meta tags.', 'add-meta-tags') . '</label> <p>' . __('If this option is enabled, Twitter Cards metadata is automatically generated for content and attachments. For more information, please refer to the <a href="https://dev.twitter.com/docs/cards">Twitter Cards specification</a>.', 'add-meta-tags') . '</p> <br /> <input id="tc_enforce_summary_large_image" type="checkbox" value="1" name="tc_enforce_summary_large_image" ' . ($options["tc_enforce_summary_large_image"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enforce_summary_large_image">' . __('Enforce the use of <code>summary_large_image</code> as default card type.', 'add-meta-tags') . '</label> <p>' . __('If this setting is enabled, <code>summary_large_image</code> will be used as the default Twitter Card type instead of the <code>summary</code> card type.', 'add-meta-tags') . '</p> <br /> <input id="tc_enable_player_card_local" type="checkbox" value="1" name="tc_enable_player_card_local" ' . ($options["tc_enable_player_card_local"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enable_player_card_local">' . __('Enable the generation of <em>player</em> cards for local media.', 'add-meta-tags') . '</label> <p>' . __('Enable the generation of <em>player</em> cards for locally hosted audio and video attachments or for posts with their post format set to audio or video. In the latter case, an audio or video is expected to be attached to the post respectively. A mandatory requirement for this feature, as outlined in the Twitter Cards specifications, is secure access to your web site over the HTTPS protocol. If secure access to your web site has not been configured properly, the player cards will not be rendered by the Twitter service. Moreover, using self-signed certificates could cause problems which might be hard to identify. This feature should be considered experimental.', 'add-meta-tags') . '</p> <h4>' . __('Important Notes', 'add-meta-tags') . '</h4> <p>' . __('In order to generate the <code>twitter:site</code> and <code>twitter:creator</code> meta tags, it is required to provide the respective usernames of the Twitter account of the author and/or the publisher of the content. Update your WordPress user\'s <a href="profile.php">profile page</a> and fill in the relevant usernames under the section <em>Contact Info</em>. Filling in the publisher username is not required, if it has already been entered in the <em>Publisher Settings</em> above.', 'add-meta-tags') . '</p> <blockquote>Twitter author username (AMT): <code>JohnSmith</code></blockquote> <blockquote>Twitter publisher username (AMT): <code>AwesomeEditors</code></blockquote> <p>' . __('By default, a Twitter Card of type <em>summary</em> is generated for your content. If your theme supports <a href="http://codex.wordpress.org/Post_Formats">post formats</a>, then it is possible to generate Twitter Cards of various types according to the specified post format. More specifically:', 'add-meta-tags') . '</p> <blockquote>A <code>summary</code> card is generated for posts with one of the <code>standard</code>, <code>aside</code>, <code>link</code>, <code>quote</code>, <code>status</code> and <code>chat</code> formats.</blockquote> <blockquote>A <code>summary_large_image</code> card is generated for posts with the <code>image</code> format. An image is expected to be attached or embedded to the post.</blockquote> <blockquote>A <code>gallery</code> card is generated for posts with the <code>gallery</code> format. At least one image is expected to be attached or embedded to the post.</blockquote> <blockquote>A <code>photo</code> card is generated for image attachment pages.</blockquote> <blockquote>A <code>player</code> card is generated for posts with the <code>audio</code> or <code>video</code> format and for audio or video attachment pages. Regarding posts, an audio or video is expected to be attached or embedded to the post.</blockquote> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Dublin Core Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Dublin Core Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_dublincore" type="checkbox" value="1" name="auto_dublincore" ' . ($options["auto_dublincore"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_dublincore">' . __('Automatically generate Dublin Core metadata.', 'add-meta-tags') . '</label> <p>' . __('If this option is enabled, Dublin Core metadata is automatically generated for your content and attachments. For more information, please refer to <a href="http://dublincore.org">Dublin Core Metadata Initiative</a>.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Schema.org Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Schema.org Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_schemaorg" type="checkbox" value="1" name="auto_schemaorg" ' . ($options["auto_schemaorg"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_schemaorg">' . __('Automatically generate and embed Schema.org Microdata.', 'add-meta-tags') . '</label> (Experimental feature) <p>' . __('Automatically generate Schema.org Microdata and embed it to your content. This feature embeds <code>meta</code> elements inside the body of the web page. This is compatible with the HTML 5 standard, so, before enabling it, make sure your theme is HTML 5 ready. For information about Microdata please refer to <a href="http://schema.org">Schema.org</a>.', 'add-meta-tags') . '</p> <br /> <p>' . __('This metadata generator actually adds schema.org microdata around the post\'s content, because marking up the exact contents of the page in an automatic manner is technically impossible. Make no mistake, this is not the ideal way to insert microdata to your web pages. This generator should be considered as a workaround in case your theme lacks schema.org microdata markup in its templates and not as a replacement of schema.org enhanced themes.', 'add-meta-tags') . '</p> <h4>' . __('Important Notes', 'add-meta-tags') . '</h4> <p>' . __('By default, this feature links the author and publisher objects to the author archive and to the front page of your web site respectively. In order to link to the author\'s profile and publisher\'s page on Google+, it is required to provide the respective URLs. These settings can be added to your WordPress user <a href="profile.php">profile page</a> under the section <em>Contact Info</em>. Filling in the publisher profile URL is not required, if it has already been entered in the <em>Publisher Settings</em> above.', 'add-meta-tags') . '</p> <blockquote>Google+ author profile URL (AMT): <code>https://plus.google.com/+JohnSmith/</code></blockquote> <blockquote>Google+ publisher page URL (AMT): <code>https://plus.google.com/+AwesomeEditors/</code></blockquote> <p>' . __('Once you have filled in the URLs to the author profile and the publisher page on Google+, the relevant link elements with the attributes <code>rel="author"</code> and <code>rel="publisher"</code> are automatically added to the head area of the web page.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Metabox Features', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Metabox Features', 'add-meta-tags') . '</span></legend> <p>' . __('It is possible to partially customize the generated metadata on a per post basis through the <em>Metadata</em> metabox which exists in the post editing screen. Below you can choose which metabox features should be enabled. Enabling or disabling these features has no effect on the custom data that has been stored for each post.', 'add-meta-tags') . '</p> <p><input id="metabox_enable_description" type="checkbox" value="1" name="metabox_enable_description" ' . ($options["metabox_enable_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_description"> ' . __('Custom description (<em>Recommended</em>).', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_keywords" type="checkbox" value="1" name="metabox_enable_keywords" ' . ($options["metabox_enable_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_keywords"> ' . __('Custom keywords (<em>Recommended</em>).', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_title" type="checkbox" value="1" name="metabox_enable_title" ' . ($options["metabox_enable_title"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_title"> ' . __('Custom content of the <code>title</code> HTML element.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_news_keywords" type="checkbox" value="1" name="metabox_enable_news_keywords" ' . ($options["metabox_enable_news_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_news_keywords"> ' . __('Custom news keywords. (<a target="_blank" href="http://support.google.com/news/publisher/bin/answer.py?hl=en&answer=68297">more info</a>)', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_full_metatags" type="checkbox" value="1" name="metabox_enable_full_metatags" ' . ($options["metabox_enable_full_metatags"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_full_metatags"> ' . __('Full meta tags box.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_image_url" type="checkbox" value="1" name="metabox_enable_image_url" ' . ($options["metabox_enable_image_url"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_image_url"> ' . __('Global image override.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_content_locale" type="checkbox" value="1" name="metabox_enable_content_locale" ' . ($options["metabox_enable_content_locale"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_content_locale"> ' . __('Content locale override. (Not to be used in conjunction with a multilingual plugin.) ', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_express_review" type="checkbox" value="1" name="metabox_enable_express_review" ' . ($options["metabox_enable_express_review"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_express_review"> ' . __('Express review. (Experimental feature. For advanced users only.)', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_referenced_list" type="checkbox" value="1" name="metabox_enable_referenced_list" ' . ($options["metabox_enable_referenced_list"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_referenced_list"> ' . __('Referenced items. (Experimental feature. Not recommended.)', 'add-meta-tags') . ' </label></p> <p>' . __('The metabox feature selection above affects all users. Advanced customization of the availability of these features on a per user basis or depending upon each user\'s permissions, is possible through the <code>amt_metadata_metabox_permissions</code> filter.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extra SEO Options', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extra SEO Options', 'add-meta-tags') . '</span></legend> <input id="noodp_description" type="checkbox" value="1" name="noodp_description" ' . ($options["noodp_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noodp_description">' . __('Add <code>NOODP</code> and <code>NOYDIR</code> to the <em>robots</em> meta tag.', 'add-meta-tags') . '</label> <p>' . __('If checked, <code>NOODP</code> and <code>NOYDIR</code> are added to the <em>robots</em> meta tag on the front page, content and attachments. This setting will prevent all search engines (at least those that support the meta tag) from displaying information from the <a href="http://www.dmoz.org/">Open Directory Project</a> or the <a href="http://dir.yahoo.com/">Yahoo Directory</a> instead of the description you set in the <em>description</em> meta tag.', 'add-meta-tags') . '</p> <br /> <p>' . __('Add <code>NOINDEX,FOLLOW</code> to the <em>robots</em> meta tag on following types of archives. This is an advanced setting that aims at reducing the amount of duplicate content that gets indexed by search engines:', 'add-meta-tags') . '</p> <p><input id="noindex_search_results" type="checkbox" value="1" name="noindex_search_results" ' . ($options["noindex_search_results"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_search_results"> ' . __('Search results. (<em>Highly recommended</em>)', 'add-meta-tags') . ' </label></p> <p><input id="noindex_date_archives" type="checkbox" value="1" name="noindex_date_archives" ' . ($options["noindex_date_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_date_archives"> ' . __('Date based archives. (<em>Recommended</em>)', 'add-meta-tags') . ' </label></p> <p><input id="noindex_category_archives" type="checkbox" value="1" name="noindex_category_archives" ' . ($options["noindex_category_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_category_archives"> ' . __('Category based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_tag_archives" type="checkbox" value="1" name="noindex_tag_archives" ' . ($options["noindex_tag_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_tag_archives"> ' . __('Tag based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_taxonomy_archives" type="checkbox" value="1" name="noindex_taxonomy_archives" ' . ($options["noindex_taxonomy_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_taxonomy_archives"> ' . __('Custom taxonomy based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_author_archives" type="checkbox" value="1" name="noindex_author_archives" ' . ($options["noindex_author_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_author_archives"> ' . __('Author based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Locale', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Locale', 'add-meta-tags') . '</span></legend> <input name="global_locale" type="text" id="global_locale" class="code" value="' . esc_attr(stripslashes($options["global_locale"])) . '" size="20" maxlength="32" /> <br /> <label for="global_locale"> ' . __('Enter a locale which will be used globally in the generated metadata overriding the default locale as returned by WordPress. Filling in this setting is only recommended if WordPress does not return a locale in the form of <code>language_TERRITORY</code>. This feature should not be used in conjunction with a multilingual plugin in order to avoid the potential generation of meta tags with invalid locale.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>en_US</code></p> <br /> <input id="manage_html_lang_attribute" type="checkbox" value="1" name="manage_html_lang_attribute" ' . ($options["manage_html_lang_attribute"] == "1" ? 'checked="checked"' : '') . '" /> <label for="manage_html_lang_attribute">' . __('Automatically set the HTML document\'s <code>lang</code> attribute according to the locale of the content.', 'add-meta-tags') . '</label> <p>' . __('By enabling this feature, Add-Meta-Tags will automatically set the HTML document\'s <code>lang</code> attribute according to the content\'s locale. This feature should not be used in conjunction with a multilingual plugin in order to avoid the potential generation of an invalid <code>lang</code> attribute.', 'add-meta-tags') . '</p> <br /> <input id="generate_hreflang_links" type="checkbox" value="1" name="generate_hreflang_links" ' . ($options["generate_hreflang_links"] == "1" ? 'checked="checked"' : '') . '" /> <label for="generate_hreflang_links">' . __('Enable the generation of a <code>link</code> element with the <code>hreflang</code> attribute.', 'add-meta-tags') . '</label> <p>' . __('If this feature is enabled, an HTML <code>link</code> element containing the proper hreflang attribute is added to the head section of the HTML page. The value of the hreflang attribute is determined by the locale of the content. This feature should not be used in conjunction with a multilingual plugin in order to avoid the potential generation of invalid hreflang links.)', 'add-meta-tags') . '</p> <br /> <input id="hreflang_strip_region" type="checkbox" value="1" name="hreflang_strip_region" ' . ($options["hreflang_strip_region"] == "1" ? 'checked="checked"' : '') . '" /> <label for="hreflang_strip_region">' . __('Strip region code from the hreflang attribute.', 'add-meta-tags') . '</label> <p>' . __('By default, Add-Meta-Tags uses the locale, which is usually required to be set in the form <code>language_TERRITORY</code> so as to comply with the various metadata specifications, as the value of the hreflang attribute. However, Google and possibly other services might interpret the regional information of the hreflang attribute as region targeting. If your content is not targeted to users in a specific region, it might be a good idea to strip regional information from this attribute by enabling this option.', 'add-meta-tags') . '</p> <p>' . __('For instance, if your locale is <code>en_US</code>, by enabling this option you force the hreflang attribute to be <code>en</code>. In the same way, if the locale is in the form <code>language_Script_TERRITORY</code>, for example <code>zh_Hans_TW</code>, by enabling this option the hreflang attribute becomes <code>zh-Hans</code>.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Secure Access', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Secure Access', 'add-meta-tags') . '</span></legend> <input id="has_https_access" type="checkbox" value="1" name="has_https_access" ' . ($options["has_https_access"] == "1" ? 'checked="checked"' : '') . '" /> <label for="has_https_access">' . __('Media are accessible over HTTPS.') . '</label> <p>' . __('Currently this option, if enabled, lets the plugin make decisions about whether to generate additional secure links even if the active connection does not use HTTPS. For instance, if the web site is accessed over HTTP and this options is enabled, additional <code>og:image:secure_url</code> meta tags will be generated for your local media. If the current connection uses HTTPS, then secure links are always generated.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Copyright URL', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Copyright URL', 'add-meta-tags') . '</span></legend> <input name="copyright_url" type="text" id="copyright_url" class="code" value="' . esc_url_raw(stripslashes(amt_get_site_copyright_url($options))) . '" size="100" maxlength="1024" /> <br /> <label for="copyright_url"> ' . __('Enter an absolute URL to a document containing copyright and licensing information about your work. If this URL is set, the relevant meta tags will be added automatically on all the pages of your web site.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>http://example.org/copyright.html</code></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Default Image', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Default Image', 'add-meta-tags') . '</span></legend> <input name="default_image_url" type="text" id="default_image_url" class="code" value="' . esc_url_raw(stripslashes($options["default_image_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="default_image_url"> ' . __('Enter an absolute URL to an image that represents your website, for instance the logo. This image will be used in the metadata of the front page and also in the metadata of the content, in case no featured image or other images have been attached or embedded.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>http://example.org/images/logo.png</code></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extended Metadata Support', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extended Metadata Support', 'add-meta-tags') . '</span></legend> <p>' . __('Add-Meta-Tags supports the generation of metadata for products and other post types. Please enable any of the following generators of extended metadata.', 'add-meta-tags') . '</p> <p><input id="extended_support_woocommerce" type="checkbox" value="1" name="extended_support_woocommerce" ' . ($options["extended_support_woocommerce"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_woocommerce"> ' . __('Metadata for WooCommerce products and product groups.', 'add-meta-tags') . ' (<span style="color:red;">Work in progress</span>) </label></p> <p><input id="extended_support_edd" type="checkbox" value="1" name="extended_support_edd" ' . ($options["extended_support_edd"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_edd"> ' . __('Metadata for Easy-Digital-Downloads products and product groups.', 'add-meta-tags') . ' (<span style="color:red;">Work in progress</span>) </label></p> <p>' . __('Please note that if none of the supported products or other supported post types can be detected, the above settings do not affect the plugin\'s normal functionality.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Review Mode', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Review Mode', 'add-meta-tags') . '</span></legend> <input id="review_mode" type="checkbox" value="1" name="review_mode" ' . ($options["review_mode"] == "1" ? 'checked="checked"' : '') . '" /> <label for="review_mode">' . __('Enable <em>Metadata Review Mode</em>.') . '</label> <p>' . __('If enabled, WordPress users with administrator privileges see a box (right above the post\'s content) containing the metadata exactly as it is added in the HTML head and body. The box is displayed for posts, pages, attachments and custom post types.', 'add-meta-tags') . '</p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Donations', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Donations', 'add-meta-tags') . '</span></legend> <input id="i_have_donated" type="checkbox" value="1" name="i_have_donated" ' . ($options["i_have_donated"] == "1" ? 'checked="checked"' : '') . '" /> <label for="i_have_donated">' . sprintf(__('If checked, the <em>message from the author</em> above goes away. Thanks for <a href="%s">donating</a>!', 'add-meta-tags'), 'http://bit.ly/HvUakt') . '</label> <br /> </fieldset> </td> </tr> </tbody> </table> <!-- Submit Buttons --> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"> <input id="submit" class="button-primary" type="submit" value="' . __('Save Changes', 'add-meta-tags') . '" name="info_update" /> </th> <th scope="row"> <input id="reset" class="button-primary" type="submit" value="' . __('Reset to defaults', 'add-meta-tags') . '" name="info_reset" /> </th> <th></th><th></th><th></th><th></th> </tr> </tbody> </table> </form> </div> '; }
/** * Function that adds the help tabs for the options. */ function amt_options_page() { // Permission Check if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } // Default Add-Meta-Tags Settings $default_options = amt_get_default_options(); if (isset($_POST['info_update'])) { // Save the Add-Meta-Tags settings amt_save_settings($_POST); // Also, since it may happen that the rewrite rules have not been flushed // this is a good place to do it. flush_rewrite_rules(); } elseif (isset($_POST["info_reset"])) { amt_reset_settings(); } // Get the options from the DB. $options = get_option("add_meta_tags_opts"); //var_dump($options); /* Configuration Page */ print ' <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div> <h2>' . __('Metadata Settings', 'add-meta-tags') . '</h2> <p>' . __('Welcome to the administration panel of the Add-Meta-Tags plugin.', 'add-meta-tags') . '</p> </div> <div class="wrap amt-settings-notice"> <!-- <h3>' . __('Notice', 'add-meta-tags') . '</h3> --> <p>' . __('Press the <code>Help</code> button on the top right corner for an introduction to metadata and also for detailed <strong>documentation</strong> about the available settings and the metadata generators. All help texts will gradually be moved to this integrated WordPress help system in order to reduce the size of this page and make it more user-friendly.', 'add-meta-tags') . '</p> </div> <div class="wrap amt-settings-notice"> <p>' . __('It is no longer possible to enter the URLs of the Publisher\'s social media profiles in the WordPress user profile page. Instead, this information should be entered in the relevant fields of the <strong>Publisher Settings</strong> section below.', 'add-meta-tags') . '</p> </div> <div class="wrap amt-settings-donations-msg" style="' . ($options["i_have_donated"] == "1" ? 'display: none;' : '') . '"> <h3>' . __('Message from the author', 'add-meta-tags') . '</h3> <p><em>Add-Meta-Tags</em> is released under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License version 2</a> and, therefore, is <strong>Free software</strong>. It is actively maintained and supported free of charge since 2006.</p> <p>However, a significant amount of <strong>time</strong> and <strong>energy</strong> has been put into the development of this plugin, so, its production has not been free from cost. If you find this plugin useful and if it has helped your blog get indexed better and rank higher, I would appreciate an <a href="http://bit.ly/HvUakt">extra cup of coffee</a>.</p> <!-- <p">Donations in BitCoin (BTC) are also accepted and welcome. Send the donated coin to the following address:</p> <ul> <li style="margin-left: 1em;">BitCoin (BTC): <code>1KkgpmaBKqQVk643VRhFRkL19Bbci4Mwn9</code></li> </ul> --> <p>Thank you in advance,<br />George Notaras</p> <div style="text-align: right;"><small>' . __('This message can be deactivated in the settings below.', 'add-meta-tags') . '</small></div> </div> <div class="wrap"> <h2>' . __('Configuration', 'add-meta-tags') . '</h2> <p>' . __('This section contains global configuration options for the metadata that is added to your web site.', 'add-meta-tags') . '</p> <form name="formamt" method="post" action="' . admin_url('options-general.php?page=add-meta-tags-options') . '"> <table class="form-table"> <tbody> '; // General Settings if (amt_has_page_on_front()) { /* Options: Example No pages +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | posts | yes | | 93 | page_for_posts | 0 | yes | | 94 | page_on_front | 0 | yes | +-----------+----------------+--------------+----------+ Example pages as front page and posts page +-----------+----------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------+----------------+--------------+----------+ | 58 | show_on_front | page | yes | | 93 | page_for_posts | 28 | yes | | 94 | page_on_front | 25 | yes | +-----------+----------------+--------------+----------+ */ print ' <tr valign="top"> <th scope="row">' . __('Front Page Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Metadata', 'add-meta-tags') . '</span></legend> ' . __('It appears that you use static pages on the <em>front page</em> and the <em>latest posts page</em> of this web site. Please visit the editing panel of these pages and set the <code>description</code> and the <code>keywords</code> meta tags in the relevant Metadata box.', 'add-meta-tags') . ' '; print '<ul>'; $front_page_id = get_option('page_on_front'); if (intval($front_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">front page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($front_page_id))); } $posts_page_id = get_option('page_for_posts'); if (intval($posts_page_id) > 0) { printf('<li>» ' . __('Edit the <a href="%s">posts page</a>', 'add-meta-tags') . '</li>', get_edit_post_link(intval($posts_page_id))); } print '</ul>'; print ' </fieldset> </td> </tr> '; } else { print ' <tr valign="top"> <th scope="row">' . __('Front Page Description', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Description', 'add-meta-tags') . '</span></legend> <textarea name="site_description" id="site_description" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_description($options))) . '</textarea> <br /> <label for="site_description"> ' . __('Enter a short description of your blog (150-250 characters).', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Front Page Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Front Page Keywords', 'add-meta-tags') . '</span></legend> <textarea name="site_keywords" id="site_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_keywords($options))) . '</textarea> <br /> <label for="site_keywords">' . __('Enter a comma-delimited list of keywords for your blog.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> '; } print ' <tr valign="top"> <th scope="row">' . __('Global Keywords', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Global Keywords', 'add-meta-tags') . '</span></legend> <textarea name="global_keywords" id="global_keywords" cols="100" rows="2" class="code">' . esc_attr(stripslashes(amt_get_site_global_keywords($options))) . '</textarea> <br /> <label for="global_keywords">' . __('Enter a comma-delimited list of global keywords.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Site-wide META tags', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Site-wide META tags', 'add-meta-tags') . '</span></legend> <textarea name="site_wide_meta" id="site_wide_meta" cols="100" rows="10" class="code">' . stripslashes($options["site_wide_meta"]) . '</textarea> <br /> <label for="site_wide_meta"> ' . __('Enter complete <a href="http://en.wikipedia.org/wiki/Meta_element" target="_blank">meta tags</a> which will appear on all web pages.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> '; // Publisher Settings print ' <tr valign="top"> <th scope="row">' . __('Publisher Settings', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Publisher Settings', 'add-meta-tags') . '</span></legend> <p>' . __('This section contains options related to your web site; the publisher of the content.', 'add-meta-tags') . '</p> <p>' . __('The following publisher related settings are shared among all users. Filling in these settings is entirely optional.', 'add-meta-tags') . '</p> <h4>' . __('Facebook publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_publisher_profile_url" type="text" id="social_main_facebook_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_facebook_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_publisher_profile_url"> ' . __('Enter an absolute URL to the Facebook profile of the publisher. If this is filled in, it will be used in the <code>article:publisher</code> meta tag.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://www.facebook.com/awesome.editors</code></p> <br /> <!-- We currently let users add the full meta tags for fb:app_id and fb:admins in the site wide meta tags box. <h4>' . __('Facebook App ID', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_app_id" type="text" id="social_main_facebook_app_id" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_app_id"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_app_id"> ' . __('Enter the App ID for <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1234567890</code></p> <br /> <h4>' . __('Facebook Admin ID list', 'add-meta-tags') . ':</h4> <input name="social_main_facebook_admins" type="text" id="social_main_facebook_admins" class="code" value=" . esc_url_raw( stripslashes( $options["social_main_facebook_admins"] ) ) . " size="100" maxlength="1024" /> <br /> <label for="social_main_facebook_admins"> ' . __('Enter a comma delimited list of numerical Facebook user IDs which will have access to <a target="_blank" href="https://developers.facebook.com/docs/platforminsights">Facebook Insights</a>.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>1111111111,2222222222</code></p> <br /> --> <h4>' . __('Google+ publisher profile URL', 'add-meta-tags') . ':</h4> <input name="social_main_googleplus_publisher_profile_url" type="text" id="social_main_googleplus_publisher_profile_url" class="code" value="' . esc_url_raw(stripslashes($options["social_main_googleplus_publisher_profile_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_googleplus_publisher_profile_url"> ' . __('Enter an absolute URL to the Google+ profile of the publisher. If this is filled in, it will be used in the link with <code>rel="publisher"</code> in the HEAD area of the web page.', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>https://plus.google.com/+AwesomeEditors/</code></p> <br /> <h4>' . __('Twitter publisher username', 'add-meta-tags') . ':</h4> <input name="social_main_twitter_publisher_username" type="text" id="social_main_twitter_publisher_username" class="code" value="' . esc_attr(stripslashes($options["social_main_twitter_publisher_username"])) . '" size="100" maxlength="1024" /> <br /> <label for="social_main_twitter_publisher_username"> ' . __('Enter the Twitter username of the publisher (without @).', 'add-meta-tags') . ' </label> <p><strong>' . __('Example', 'add-meta-tags') . '</strong>: <code>AwesomeEditors</code></p> <br /> </fieldset> </td> </tr> '; // Basic Metadata print ' <tr valign="top"> <th scope="row">' . __('Basic Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Basic Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_description" type="checkbox" value="1" name="auto_description" ' . ($options["auto_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_description">' . __('Automatically generate the <em>description</em> meta tag.', 'add-meta-tags') . '</label> <br /> <input id="auto_keywords" type="checkbox" value="1" name="auto_keywords" ' . ($options["auto_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_keywords">' . __('Automatically generate the <em>keywords</em> meta tag.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Opengraph Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Opengraph Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_opengraph" type="checkbox" value="1" name="auto_opengraph" ' . ($options["auto_opengraph"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_opengraph">' . __('Automatically generate Opengraph meta tags.', 'add-meta-tags') . '</label> <br /> <input id="og_omit_video_metadata" type="checkbox" value="1" name="og_omit_video_metadata" ' . ($options["og_omit_video_metadata"] == "1" ? 'checked="checked"' : '') . '" /> <label for="og_omit_video_metadata">' . __('Omit <code>og:video</code> meta tags.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Twitter Cards Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Twitter Cards Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_twitter" type="checkbox" value="1" name="auto_twitter" ' . ($options["auto_twitter"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_twitter">' . __('Automatically generate Twitter Cards meta tags.', 'add-meta-tags') . '</label> <br /> <input id="tc_enforce_summary_large_image" type="checkbox" value="1" name="tc_enforce_summary_large_image" ' . ($options["tc_enforce_summary_large_image"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enforce_summary_large_image">' . __('Enforce the use of <code>summary_large_image</code> as default card type.', 'add-meta-tags') . '</label> <br /> <input id="tc_enable_player_card_local" type="checkbox" value="1" name="tc_enable_player_card_local" ' . ($options["tc_enable_player_card_local"] == "1" ? 'checked="checked"' : '') . '" /> <label for="tc_enable_player_card_local">' . __('Enable the generation of <em>player</em> cards for local media.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Dublin Core Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Dublin Core Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_dublincore" type="checkbox" value="1" name="auto_dublincore" ' . ($options["auto_dublincore"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_dublincore">' . __('Automatically generate Dublin Core metadata.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Schema.org Metadata', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Schema.org Metadata', 'add-meta-tags') . '</span></legend> <input id="auto_schemaorg" type="checkbox" value="1" name="auto_schemaorg" ' . ($options["auto_schemaorg"] == "1" ? 'checked="checked"' : '') . '" /> <label for="auto_schemaorg">' . __('Automatically generate and embed Schema.org Microdata.', 'add-meta-tags') . '</label> (Experimental feature) <br /> <input id="schemaorg_force_jsonld" type="checkbox" value="1" name="schemaorg_force_jsonld" ' . ($options["schemaorg_force_jsonld"] == "1" ? 'checked="checked"' : '') . '" /> <label for="schemaorg_force_jsonld">' . __('Enforce the generation of schema.org metadata as JSON-LD data.', 'add-meta-tags') . '</label> (<span style="color:red;">For testing only</span>) <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Locale', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Locale', 'add-meta-tags') . '</span></legend> <input name="global_locale" type="text" id="global_locale" class="code" value="' . esc_attr(stripslashes($options["global_locale"])) . '" size="20" maxlength="32" /> <br /> <label for="global_locale"> ' . __('Enter a locale, for example <code>en_US</code> or <code>zh_Hans_TW</code>, which will be used globally in the generated metadata overriding the default locale as returned by WordPress.', 'add-meta-tags') . ' </label> <br /> <input id="manage_html_lang_attribute" type="checkbox" value="1" name="manage_html_lang_attribute" ' . ($options["manage_html_lang_attribute"] == "1" ? 'checked="checked"' : '') . '" /> <label for="manage_html_lang_attribute">' . __('Automatically set the HTML document\'s <code>lang</code> attribute according to the locale of the content.', 'add-meta-tags') . '</label> <br /> <input id="generate_hreflang_links" type="checkbox" value="1" name="generate_hreflang_links" ' . ($options["generate_hreflang_links"] == "1" ? 'checked="checked"' : '') . '" /> <label for="generate_hreflang_links">' . __('Enable the generation of a <code>link</code> element with the <code>hreflang</code> attribute.', 'add-meta-tags') . '</label> <br /> <input id="hreflang_strip_region" type="checkbox" value="1" name="hreflang_strip_region" ' . ($options["hreflang_strip_region"] == "1" ? 'checked="checked"' : '') . '" /> <label for="hreflang_strip_region">' . __('Strip region code from the hreflang attribute.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Metabox Features', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Metabox Features', 'add-meta-tags') . '</span></legend> <p>' . __('It is possible to partially customize the generated metadata on a per post basis through the <em>Metadata</em> metabox which exists in the post editing screen. Below you can choose which metabox features should be enabled. Enabling or disabling these features has no effect on the custom data that has been stored for each post.', 'add-meta-tags') . '</p> <p><input id="metabox_enable_description" type="checkbox" value="1" name="metabox_enable_description" ' . ($options["metabox_enable_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_description"> ' . __('Custom description (<em>Recommended</em>).', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_keywords" type="checkbox" value="1" name="metabox_enable_keywords" ' . ($options["metabox_enable_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_keywords"> ' . __('Custom keywords (<em>Recommended</em>).', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_title" type="checkbox" value="1" name="metabox_enable_title" ' . ($options["metabox_enable_title"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_title"> ' . __('Custom content of the <code>title</code> HTML element.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_news_keywords" type="checkbox" value="1" name="metabox_enable_news_keywords" ' . ($options["metabox_enable_news_keywords"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_news_keywords"> ' . __('Custom news keywords. (<a target="_blank" href="http://support.google.com/news/publisher/bin/answer.py?hl=en&answer=68297">more info</a>)', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_full_metatags" type="checkbox" value="1" name="metabox_enable_full_metatags" ' . ($options["metabox_enable_full_metatags"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_full_metatags"> ' . __('Full meta tags box.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_image_url" type="checkbox" value="1" name="metabox_enable_image_url" ' . ($options["metabox_enable_image_url"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_image_url"> ' . __('Global image override.', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_content_locale" type="checkbox" value="1" name="metabox_enable_content_locale" ' . ($options["metabox_enable_content_locale"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_content_locale"> ' . __('Content locale override. (Not to be used in conjunction with a multilingual plugin.) ', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_express_review" type="checkbox" value="1" name="metabox_enable_express_review" ' . ($options["metabox_enable_express_review"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_express_review"> ' . __('Express review. (Experimental feature. For advanced users only.)', 'add-meta-tags') . ' </label></p> <p><input id="metabox_enable_referenced_list" type="checkbox" value="1" name="metabox_enable_referenced_list" ' . ($options["metabox_enable_referenced_list"] == "1" ? 'checked="checked"' : '') . '" /> <label for="metabox_enable_referenced_list"> ' . __('Referenced items. (Experimental feature. Not recommended.)', 'add-meta-tags') . ' </label></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extra SEO Options', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extra SEO Options', 'add-meta-tags') . '</span></legend> <input id="noodp_description" type="checkbox" value="1" name="noodp_description" ' . ($options["noodp_description"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noodp_description">' . __('Add <code>NOODP</code> and <code>NOYDIR</code> to the <em>robots</em> meta tag.', 'add-meta-tags') . '</label> <br /> <p>' . __('Add <code>NOINDEX,FOLLOW</code> to the <em>robots</em> meta tag on following types of archives:', 'add-meta-tags') . '</p> <p><input id="noindex_search_results" type="checkbox" value="1" name="noindex_search_results" ' . ($options["noindex_search_results"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_search_results"> ' . __('Search results. (<em>Highly recommended</em>)', 'add-meta-tags') . ' </label></p> <p><input id="noindex_date_archives" type="checkbox" value="1" name="noindex_date_archives" ' . ($options["noindex_date_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_date_archives"> ' . __('Date based archives. (<em>Recommended</em>)', 'add-meta-tags') . ' </label></p> <p><input id="noindex_category_archives" type="checkbox" value="1" name="noindex_category_archives" ' . ($options["noindex_category_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_category_archives"> ' . __('Category based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_tag_archives" type="checkbox" value="1" name="noindex_tag_archives" ' . ($options["noindex_tag_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_tag_archives"> ' . __('Tag based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_taxonomy_archives" type="checkbox" value="1" name="noindex_taxonomy_archives" ' . ($options["noindex_taxonomy_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_taxonomy_archives"> ' . __('Custom taxonomy based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <p><input id="noindex_author_archives" type="checkbox" value="1" name="noindex_author_archives" ' . ($options["noindex_author_archives"] == "1" ? 'checked="checked"' : '') . '" /> <label for="noindex_author_archives"> ' . __('Author based archives.', 'add-meta-tags') . ' (' . __('Even if checked, the first page of this type of archive is always indexed.', 'add-meta-tags') . ') </label></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Copyright URL', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Copyright URL', 'add-meta-tags') . '</span></legend> <input name="copyright_url" type="text" id="copyright_url" class="code" value="' . esc_url_raw(stripslashes(amt_get_site_copyright_url($options))) . '" size="100" maxlength="1024" /> <br /> <label for="copyright_url"> ' . __('Enter an absolute URL to a document containing copyright and licensing information about your work.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Default Image', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Default Image', 'add-meta-tags') . '</span></legend> <input name="default_image_url" type="text" id="default_image_url" class="code" value="' . esc_url_raw(stripslashes($options["default_image_url"])) . '" size="100" maxlength="1024" /> <br /> <label for="default_image_url"> ' . __('Enter an absolute URL to an image that represents your website, for instance the logo.', 'add-meta-tags') . ' </label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Secure Access', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Secure Access', 'add-meta-tags') . '</span></legend> <input id="has_https_access" type="checkbox" value="1" name="has_https_access" ' . ($options["has_https_access"] == "1" ? 'checked="checked"' : '') . '" /> <label for="has_https_access">' . __('Media are accessible over HTTPS.', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Media Limit', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Media Limit', 'add-meta-tags') . '</span></legend> <input id="force_media_limit" type="checkbox" value="1" name="force_media_limit" ' . ($options["force_media_limit"] == "1" ? 'checked="checked"' : '') . '" /> <label for="force_media_limit">' . __('Do not generate metadata for more than one media file of each type (image, video, audio).', 'add-meta-tags') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Extended Metadata Support', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Extended Metadata Support', 'add-meta-tags') . '</span></legend> <p>' . __('Add-Meta-Tags supports the generation of metadata for products and other post types. Please enable any of the following generators of extended metadata.', 'add-meta-tags') . '</p> <p><input id="extended_support_woocommerce" type="checkbox" value="1" name="extended_support_woocommerce" ' . ($options["extended_support_woocommerce"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_woocommerce"> ' . __('Metadata for WooCommerce products and product groups.', 'add-meta-tags') . ' (<span style="color:red;">Work in progress</span>) </label></p> <p><input id="extended_support_edd" type="checkbox" value="1" name="extended_support_edd" ' . ($options["extended_support_edd"] == "1" ? 'checked="checked"' : '') . '" /> <label for="extended_support_edd"> ' . __('Metadata for Easy-Digital-Downloads products and product groups.', 'add-meta-tags') . ' (<span style="color:red;">Work in progress</span>) </label></p> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Review Mode', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Review Mode', 'add-meta-tags') . '</span></legend> <input id="review_mode" type="checkbox" value="1" name="review_mode" ' . ($options["review_mode"] == "1" ? 'checked="checked"' : '') . '" /> <label for="review_mode">' . __('Enable <em>Metadata Review Mode</em>.') . '</label> <br /> </fieldset> </td> </tr> <tr valign="top"> <th scope="row">' . __('Donations', 'add-meta-tags') . '</th> <td> <fieldset> <legend class="screen-reader-text"><span>' . __('Donations', 'add-meta-tags') . '</span></legend> <input id="i_have_donated" type="checkbox" value="1" name="i_have_donated" ' . ($options["i_have_donated"] == "1" ? 'checked="checked"' : '') . '" /> <label for="i_have_donated">' . sprintf(__('If checked, the <em>message from the author</em> above goes away. Thanks for <a href="%s">donating</a>!', 'add-meta-tags'), 'http://bit.ly/HvUakt') . '</label> <br /> </fieldset> </td> </tr> </tbody> </table> <!-- Submit Buttons --> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"> <input id="submit" class="button-primary" type="submit" value="' . __('Save Changes', 'add-meta-tags') . '" name="info_update" /> </th> <th scope="row"> <input id="reset" class="button-primary" type="submit" value="' . __('Reset to defaults', 'add-meta-tags') . '" name="info_reset" /> </th> <th></th><th></th><th></th><th></th> </tr> </tbody> </table> </form> </div> '; }
/** * Helper function that returns true, if the currently displayed page is the * main index page of the site that displays the latest posts. * * This function was written because is_front_page() returns true if a static * page is used as the front page and also if the latest posts are displayed * on the front page. */ function amt_is_default_front_page() { if (!amt_has_page_on_front() && is_front_page()) { return true; } return false; }