Changelog (latest version) Last updated: 21st April 2016. Feature Highlights: WooCommerce schema.org breadcrumbs. Intelligently nested schema.org breadcrumbs. Clarified schema.org website name. Better Automated Description sentence endings. Vibrant character counters for when you need extra visual assistance. New Automated Description options. New Archive title prefix options. Modernized and Smarter SEO bar, with many more conditional checks. Many linguistic improvements, with more flow in the SEO Bar. Yandex Sitemap pinging support. Extended Title Fix extension support. Improved performance, more efficient cache key generation. New Sitemap Date output options. Adaptive WPML URL generation. Improved editorial translations. Automatic option merging. New AJAX integration when adding tags. Personalized error handling for developers. 129 new functions for developers. WP Query Admin synchronization for developers. Automated setting navigation tabs for developers. Detailed Changelog For everyone: Added: Default options merging on plugin update, so you don’t have to check out the new features manually with each update. When new features are added which have not yet been registered. These features will now be updated to its default settings. Multisite compatible. Archive title prefix options! LD+Json Schema.org website name and URL header markup on the front-page. This should change the example.com > category > subcategory output in Google to Example Site > category > subcategory. See this page for more info. Time display options for the sitemap. Now you can select how the time is output. Default “Complete date plus hours, minutes and timezone”. New global Automated Description options. Removal of the three dots after the description if the excerpt ends with a dot, question mark or exclamation point. Removal commas if the excerpt ends with one in the automated description. Extra compatibility for when the theme is doing it wrong, for when the Title Fix extension plugin has been used. Article Modified Time now also works for WooCommerce products and are treated as Posts. Headway compatibility. Done by using one of their SEO plugin detection filters which disables their SEO functionality. Runway Framework theme compatibility. Yandex sitemap pinging support. Description excerpt detection. Now when an excerpt is filled in, no description additions will be added in front of them. Lowered pinging response time to 3s from 5s, to reduce max script time to 12s from 20s on post publish. The SEO Bar now has a Double Title check (will appear red). This will make sure that you can see where the copy of SEO data went wrong. The SEO Bar now also checks for global category and tag indexing, following and archiving options on the applicable pages. The SEO Bar now has breaks in the description at various places, to impact behavior through glances. The SEO Bar Indexing notice turns red if Indexing has been enabled, yet the blog isn’t set to public. The SEO Bar Following notice turns yellow if Following has been disabled, yet the blog isn’t set to public. The SEO Bar Archiving notice turns yellow if Archiving has been enabled, yet the blog isn’t set to public. The SEO Bar Categories and Tags Robots options now reflect in the SEO bar. The SEO Bar’s description notification word counter now has a filterable minimum word character length which will have a higher tolerance for repeated words that are less than (filterable) 3 characters (5 times instead of 3). The SEO Bar will now show an exclamation mark when the Post ID can’t be found. It’s quite nice, and you probably won’t ever see it :(. Non-executive index.php files in folders which contain readable files, to prevent indexing of such. WooCommerce breadcrumb support! Nested post categories now also have a breadcrumb script. Multiple even, when applicable. All admin notices are now dismissible. Term AJAX handler for the SEO bar, so when you add a new term you can already check its SEO state. Small notification in the Feed Settings when the feed is already converted into an excerpt. The blog page is now also shown within the Sitemap. Color Deficiency options have been added to the character counters. Clicking on them will add extra information. The Color Deficiency options have been split into four options: Counter, Counter + Name, Name, Counter inversed. Descriptive URL on Title Blogname removal option. Title generation cache. It no longer gets generated more than once per page load. Changed: The SEO Bar is now flat and square. Much more modern. The SEO Bar’s balloon is now also flat and square. The SEO Bar T/D and G letters have a space removed between them to make it a little more appealing on smaller screens. The SEO Bar now has a maximum width of 220px instead of 260px. Description “good” detection length range has been extended to 137 minimum instead of 145, to eliminate over-optimization. When no description can be generated from the content or excerpt, the social description is now completely empty. LD+Json markup now uses double quotes instead of single. LD+Json Sitelinks Search Box script now excludes the Alternative Name, as it’s optional and non-configurable (yet). Short explanatory text on Canonical question mark title within the inpost SEO metabox is displayed rather than the HTML output. When a Post ID can’t be found for the SEO Bar, a more elegant notification is displayed. Moved SEO Bar before bbPress Reply Created. The sitemap, theme doing it right, description and LD+Json transient keys have been invalidated. Open Graph plugin detection now only shows a notification, instead of removing OG output as well. These values may be duplicated (although undesired). When a Custom Home Page Title Tagline is set, it’s now used for the Title on the description on the home page. When no Blog Tagline has been set, it will now return “Untitled”. Updated: Several sentences to have a better English structure to what they do. Reworked: URL generation. WPML URL generation, it’s now much more consistent and will now also work with custom language settings. It will now also show the correct URL in admin at all times, moreover, it will with subdomains too. WPML shortlink URL now also redirect correctly when visited in special scenarios. Massively improved URL generation time by adding more layers of cache on often used and also heavy scripts. Massively improved LD-json script generation time by adding more layers of cache and exchanging heavy operations for more efficient ones. Metabox setting tabs no longer rely on WordPress Core admin navigation tabs. JavaScript caching and advanced optimizations for better browser performance through Google Closure Compiler. Description excerpt generation exceeding words calculation. Improved: The SEO Bar’s now more reliable in its data. The SEO Bar hover balloon translations, “but” now can’t show up twice, and is instead replaced with “and”. E.g. “But the blog isn’t set to public. And there are no posts…” The SEO Bar buttons are now converted to placeholder hyperlinks. The SEO Bar’s text is now easier on the eyes due to added text-shadow. The SEO Bar’s hover balloon is now aligned with its bar on Posts and Pages overview and to column in Term overview. The Custom Home Page Title JavaScript placeholder now updates to default when the Tagline is emptied. Translations with multiple variable strings can now safely be translated and switched around. The automated description orders are now translatable. LD+Json transient is also flushed on change within the SEO Settings page when the home page is a blog. Robots tag generation time. Removed break (<br />) closing tag throughout the plugin as we’re not using XHTML in WordPress. Sanitation of URLs where query args must be removed is now compatible on any (odd) server configuration. Post State “No Search” additions check is now only done on singular pages within the admin dashboard. The Term SEO Box is removed if another popular SEO plugin is detected. Feed excerpt generation time. Sitemap generation time. Disabled query caching when fetching posts on the sitemap as it’s a redundant feature at that point. Right before the sitemap gets rendered, many filters have been cleaned up to save memory. The custom title is now trimmed from whitespace in the Home Page Settings metabox. WPMUdev Domain Mapping database values are now all fetched in one query instead of two. External SEO plugin detection, it now uses constants to search for when applicable. External Sitemap plugin detection, it now uses constants to search for when applicable. Settings tabs vertical icon alignment. Fixed: Added cache key language detection, to build correct descriptions for the right language. This works on WPML, qTranslate X and many other translation plugins. Added back Genesis schema.org <head> markup indicator on the home page. Post type support check was run throughout the WordPress admin dashboard, now it only checks if there are actually posts to check. WPML query args canonical pagination links. Plausible description cache conflict when the home page has been switched from page to blog in the SEO settings page. WPML URL base structure check was done wrongfully, the canonical URLs are now fixed for multilingual pages. Incorrect title counter length on all posts and pages when the home page title tagline has been removed. This issue was first encountered in version 2.5.0. Incorrect description was output on some archives. The removal of title additions now correctly reflect on the title counter length when JavaScript is disabled. The removal of title additions are now also reflecting its setting on the placeholders within categories and tags. Some deprecated functions gave a fatal error or warning, this has been resolved. When Reading Settings’ Feed Options are set to summary, the backlink is now still shown when enabled. Screen Options showed an SEO column, while there isn’t any in pages, posts and terms. When using diacritic characters, like in French, The SEO Bar’s description word counter would be incorrect. On WooCommerce product tag search within the dashboard, Products showed the wrong SEO bar. On WooCommerce product tag search within the dashboard, Products could show the wrong post SEO state. On Touching the SEO bar, the pointer could be misplaced. When a category is added, the SEO bar doesn’t show an empty and shifted row anymore. Double subdirectory generation in special Site Address URL configurations. Link relationship on the second Page was pointing to itself. The SEO Bar within Terms had a minor pixel overflow on small screens. Unneeded Page navigation confirmation warning when deleting post. Global page and paged variables could’ve been overwritten by the theme resulting in a crash. This can’t happen anymore. Pinging the Search Engines of sitemap changes now won’t happen on post creation. External URLs to a root domain without slash now work correctly in custom 301 redirect. Servers that don’t support PCRE will now have 301 redirects parsed correctly. Archive rel next/prev pagination links now also work on the Blog Page. WordPress version compare could sometimes return incorrect values when dealing with unstable versions. The Canonical URL is now selecting the primary domain when available when using WPMUdev Domain Mapping. Blogname cache wasn’t initialized correctly. Blog Description cache wasn’t initialized correctly. Removed: Shortlink URL from Homepage, as it’s quite useless and self referring there. Yahoo Pinging option and initiation, as they’ve moved to Bing quite some time ago (oops). WPMUdev Avatars support. As WordPress core has taken over this feature and it was unreliable. Canonical URL from Search and 404 pages. It yields no value on those pages and might even yield incorrect results. Official support for WordPress 3.6 and 3.7. It takes too much time to maintain such backwards compatibility. For developers: Added: New filters! See Filter Notes below. More than 150 new functions to make this plugin more maintainable. AutoDescription_Core class, this class replaced AutoDescription_Init from being the latest class. AutoDescription_Generate_Description class. AutoDescription_Generate_Title class. AutoDescription_Generate_Url class. AutoDescription_Generate_Ldjson class. AutoDescription_Generate_Image class. AutoDescription_Generate_Author class. AutoDescription_Author class. AutoDescription_PostInfo class. AutoDescription_TermInfo class. AutoDescription_Compat class. AutoDescription_Debug class. AutoDescription_Query class, this class contains queries which use the default WP_Query class, but then extends it to be used in the admin area as well. AutoDescription_Admin_Init::localize_admin_javascript() function. AutoDescription_Generate_Title::get_the_real_archive_title() function, which also works in the admin area and has a term object argument and outputs no HTML, effectively speading the whole plugin up on archive pages. AutoDescription_Detect::current_theme_supports_title_tag() function, returns cached true if theme supports title tag. AutoDescription_Siteoptions::get_all_options() function. Customized error handlers. THE_SEO_FRAMEWORK_DISABLE_TRANSIENTS boolean constant listener to disable transients. the_seo_framework_is_settings_page() function. Extra $post_id arguments, see Filter notes for more information below. Untitled Term Name when using WordPress core archive title filters when returning falsy. Debugging now shows memory usage and processing time. When debugging is enabled, the memory usage is also shown in the plugin indicator within HTML. Changed: AutoDescription_Core::post_type_support() now has an array argument parameter. AutoDescription_Core::get_the_real_ID() now returns 0 instead of false if no ID is found. AutoDescription_Generate_Title::build_title_notagline() is now protected. AutoDescription_Generate_Title::title_for_terms() now uses array $args for parameters. AutoDescription_Generate_Title::generate_title() now uses array $args for parameters. AutoDescription_Generate_Title::title() admin functions now don’t rely on $args['meta']anymore to bypass doing it wrong detection, but rather on is_admin() checks. AutoDescription_Generate_Title::title()‘s $args['meta'] is now set to default false. CSS and JS file identifiers have their duplicated css or js removed. So autodescription-css-css is now autodescription-css, and so forth. Updated: JS files and cache. CSS files and cache. Reworked: Class structure and order. AutoDescription_DoingItRight and all its contents. AutoDescription_Generate_Description and all its contents. AutoDescription_Transients::generate_cache_key(), it’s much faster and more accurate now. AutoDescription_Generate_Url and all its contents. AutoDescription_Generate_Ldjson and all its contents. AutoDescription_Generate_Title and all its contents. Functions have been put in their respective aptly named classes where applicable. Debugging has been modified to clean up the code greatly. Metabox Setting Navigation Tabs, now your tabs are automatically styled and integrated when using the AutoDescription_Metaboxes::nav_tab_wrapper() function. It’s also less “search-and-destroy” and thus easier on the browser. The metabox navigation tabs’ content is now also automatically aligned. Improved: Hundreds of type optimization checks in if-statements, not only making it more readable, but also two to forty time less taxing on the CPU per optimization (count the Hertz!). Cached the SEO bar translations. render.class.php filters can now return empty string to disable its output. The_SEO_Framework_Load::call_function() consumes less memory. the_seo_framework_knowledgegraph_settings_tabs filter now has an argument parameter. the_seo_framework_sitemaps_settings_tabs filter now has an argument parameter. the_seo_framework_social_settings_tabs filter now has an argument parameter. the_seo_framework_add_blogname_to_title filter now has effect throughout the plugin. the_seo_framework_canonical_force_scheme filter now works on all URLs generated by this plugin and has now an $scheme argument which passes the current used scheme. WordPress Query detection. Blog page and Home Page query detection. Search query titles aren’t escaped twice anymore. Removed duplicated term object calls on term pages, reducing memory usage. When the paged URLs filter is used, the then useless URLs aren’t rendered. Plugin settings activation filter usage is now reflected throughout the plugin. When using the plugin settings activation filter, new default options are still applied (which are also filterable). Benchmarks have shown that an array flip to use an isset match only benefits huge arrays very little and only when you’re certain the result is at the end of the array. Otherwise, it’s a drastic performance decrease. Therefore $this->is_array() calls have been set back to the default PHP behavior. og:image resizing now doesn’t use PCRE anymore, but regular PHP find and replace. og:image quality has been upped to 82 from 70. This is according to the new WordPress 4.5.0 standards. This plugin’s admin CSS and JS are now registered and cached prior to enqueueing. This speeds things up if multiple script calling hooks are used. The Term SEO box initialization now only happens on the term edit screens. Automated Description Example now uses ID’s rather than classes for better JavaScript performance. Fixed: the_seo_framework_dot_version() now checks for four dot versions if applicable. AutoDescription_Core::get_the_real_ID() won’t return the latest post ID anymore on taxonomial archives. AutoDescription_Generate_Image::get_image() now returns something when the third parameter is set to false. The SEO Bar column initialization filter used to be called as an action and mixed echoing and returning. It’s now a consistent filter, as WP core suggests. Empty delimiter PHP warning when the theme is doing it wrong and no separator has been provided. Improperly sanitized option, disclosed. Although, it holds no security treat as all options always go through multiple sanitation processes. PHP Warning in the robots.txt output. This will make subdirectory sitemaps work again. JavaScript undefined TypeError on mobile screens and Microsoft Edge. The_SEO_Framework_Load::call_function() contained wrong error handling. The_SEO_Framework_Load::call_function() now converts and checks for $this correctly. Evidently speeding up the plugin greatly. The_SEO_Framework_Load::call_function() now doesn’t return a fatal error anymore if class and method isn’t found when the class is referred to as string. LD+Json Home Page flushing cache wasn’t initialized correctly on SEO settings save. Deprecated: AutoDescription_Detect::current_theme_supports(), use core current_theme_supportsinstead. Second parameter for AutoDescription_Generate_Url::the_url(), use $args['id'] instead. AutoDescription_Debug::echo_debug_information() function, replaced byAutoDescription_Debug::get_debug_information() and refactored. AutoDescription_DoingItRight::seo_column() function, replaced byAutoDescription_DoingItRight::seo_bar() to eliminate naming confusion. AutoDescription_Sitemaps::setup_sitemap_transient() function, replaced byAutoDescription_Sitemaps::setup_sitemap() to eliminate naming confusion. AutoDescription_Detect::is_locale() function, replaced byAutoDescription_Detect::check_wp_locale() to eliminate naming confusion. AutoDescription_Generate_Title::get_placeholder_title() function, useAutoDescription_Generate_Title::title() instead with the argument notagline. Removed: Open Graph plugins check from Canonical URL output, these are unrelated. Filter/Constant/Action PHP comments indicating changes from 2.3.0 to clean up code. Title generation placeholder argument. Use get_custom_field and/or notagline instead. Other: Cleaned up code, massively. Filter Notes: New: (string) the_seo_framework_shortlink_output (string) the_seo_framework_robots_output (string) the_seo_framework_paged_url_output_prev (string) the_seo_framework_paged_url_output_next (string) the_seo_framework_ldjson_scripts (bool) the_seo_framework_json_name_output (bool) the_seo_framework_use_archive_title_prefix (bool) the_seo_framework_update_options_at_update (string) the_seo_framework_metabox_priority (int) the_seo_framework_term_metabox_priority (bool) the_seo_framework_seo_bar_pill (int) the_seo_framework_bother_me_desc_length (array) the_seo_framework_description_settings_tabs (array) the_seo_framework_title_settings_tabs (string) the_seo_framework_feed_source_link_text Altered: (string) the_seo_framework_og_image_after_featured, added $post_id parameter. (string) the_seo_framework_og_image_after_header, added $post_id parameter. (string) the_seo_framework_description_output, added $post_id parameter. (string) the_seo_framework_ogdescription_output, added $post_id parameter. (string) the_seo_framework_oglocale_output, added $post_id parameter. (string) the_seo_framework_ogtitle_output, added $post_id parameter. (string) the_seo_framework_ogtype_output, added $post_id parameter. (string) the_seo_framework_ogimage_output, added $post_id parameter. (string) the_seo_framework_ogsitename_output, added $post_id parameter. (string) the_seo_framework_twittercard_output, added $post_id parameter. (string) the_seo_framework_twittersite_output, added $post_id parameter. (string) the_seo_framework_twittercreator_output, added $post_id parameter. (string) the_seo_framework_twittertitle_output, added $post_id parameter. (string) the_seo_framework_twitterdescription_output, added $post_id parameter. (string) the_seo_framework_twitterimage_output, added $post_id parameter. (string) the_seo_framework_facebookauthor_output, added $post_id parameter. (string) the_seo_framework_facebookpublisher_output, added $post_id parameter. (string) the_seo_framework_facebookappid_output, added $post_id parameter. (string) the_seo_framework_publishedtime_output, added $post_id parameter. (string) the_seo_framework_modifiedtime_output, added $post_id parameter. (bool) the_seo_framework_output_canonical, added $post_id parameter. (string) the_seo_framework_googlesite_output, added $post_id parameter. (string) the_seo_framework_bingsite_output, added $post_id parameter. (string) the_seo_framework_pintsite_output, added $post_id parameter. (string) the_seo_framework_robots_meta, added $post_id parameter. (array) the_seo_framework_robots_settings_tabs, added $args parameter. (array) the_seo_framework_social_settings_tabs, added $args parameter. (array) the_seo_framework_knowledgegraph_settings_tabs, added $args parameter. (array) the_seo_framework_sitemaps_settings_tabs, added $args parameter. Removed: (bool) the_seo_framework_seo_bar_squared. Replaced by (bool) the_seo_framework_seo_bar_pill. Constant Notes: New: (bool) THE_SEO_FRAMEWORK_DISABLE_TRANSIENTS. Note: Does not disable transients for pinging search engines. Removed: (bool) THE_SEO_FRAMEWORK_DEBUG_MORE. It always shows more now. Notes: I marked numerous functions with @access private. These functions can change behavior at any time without notice and should never be used in extension plugins, even though publicly accessible. Please duplicate the function if you really need to use it. Please be aware that all CSS classes will change in a future update, to cover a synonymous namespace of The SEO Framework.
Source