Changelog (latest version)
Last updated: 7th April 2016
Changes added since first Alpha are marked with “3 March NEW”.
Changes added since second Alpha are marked with “5 March NEW”.
Changes added since third and forth Alpha are marked with “1 April NEW”.
Changes added since fifth Alpha are marked with “6 April NEW”.
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. (1 April NEW)
- 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 toExample Site > category > subcategory
. See this page for more info. - 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.
- Headway compatibility. Done by using one of their SEO plugin detection filters which disables their SEO functionality. (6 April NEW)
- Runway Framework theme compatibility. (1 April NEW)
- Yandex sitemap pinging support.
- Lowered pinging response time to 3s from 5s, to reduce max script time to 12s from 20s.
- 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). (1 April NEW)
- 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.
- Term AJAX handler for the SEO bar, so when you add a new term you can already check its SEO state. (5 March NEW)
- Small notification in the Feed Settings when the feed is already converted into an excerpt. (1 April NEW)
- The blog page is now also shown within the Sitemap. (1 April NEW)
- All admin notices are now dismissible. (3 March NEW)
- Changed:
- The SEO Bar is now flat and square. Much more modern. (5 March NEW)
- The SEO Bar’s balloon is now also flat and square. (5 March NEW)
- 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. (5 March NEW)
- Description “good” detection length range has been extended to 137 minimum instead of 145, to eliminate over-optimization. (1 April NEW)
- 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. (5 March NEW)
- When a Post ID can’t be found for the SEO Bar, a more elegant notification is displayed. (5 March NEW)
- Moved SEO Bar before bbPress Reply Created. (5 March NEW)
- The sitemap, theme doing it right, description and LD+Json transient keys have been invalidated. (1 April NEW)
- 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. (6 April NEW)
- JavaScript caching and advanced optimizations for better browser performance through Google Closure Compiler. (6 April NEW)
- Improved:
- 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. (5 March NEW)
- The SEO Bar’s hover balloon is now aligned with its bar. (5 March NEW)
- Translations with multiple variable strings can now safely be translated and switched around.
- 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. (3 March NEW)
- Post State “No Search” additions check is now only done on singular pages within the admin dashboard. (5 March NEW)
- The Term SEO Box is removed if another popular SEO plugin is detected. (5 March NEW)
- Feed excerpt generation time. (1 April NEW)
- Sitemap generation time. (1 April NEW)
- Fixed:
- 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.
- 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. (1 April NEW)
- Screen Options showed an SEO column, while there isn’t any in pages, posts and terms. (5 March NEW)
- When using diacritic characters, like in French, The SEO Bar’s description word counter would be incorrect. (1 April NEW)
- On Touching the SEO bar, the pointer could be misplaced. (5 March NEW)
- When a category is added, the SEO bar doesn’t show an empty and shifted row anymore. (5 March NEW)
- Double subdirectory generation in special Site Address URL configurations. (3 March NEW)
- Link relationship on the second Page was pointing to itself. (5 March NEW)
- The SEO Bar within Terms minor a pixel overflow on small screens. (5 March NEW)
- 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. (1 April NEW)
- Pinging the Search Engines of sitemap changes now won’t happen on post creation. (5 March NEW)
- External URLs to a root domain without slash now work correctly in custom 301 redirect. (1 April NEW)
- Servers that don’t support PCRE will now have 301 redirects parsed correctly. (1 April NEW)
- Archive rel next/prev pagination links now also work on the Blog Page. (1 April NEW)
- WordPress version compare could sometimes return incorrect values when dealing with unstable versions. (6 April NEW)
- Added back Genesis schema.org
- Removed:
- Shortlink URL from home page, as it’s quite useless and self referring there.
- Yahoo Pinging option and initiation, as they’ve moved to Bing (oops). (5 March NEW)
- WPMUdev Avatars support. As WordPress core has taken over this feature and it was unreliable. (1 April NEW)
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 replacedAutoDescription_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_Compat
class.AutoDescription_TermInfo
class.AutoDescription_Debug
class.AutoDescription_Query
class.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. (5 March NEW)- Customized error handlers.
THE_SEO_FRAMEWORK_DISABLE_TRANSIENTS
boolean constant listener to disable transients.- Extra
$post_id
arguments, see Filter notes for more information below. - Untitled Term Name when using WordPress core archive title filters when returning falsy. (1 April NEW)
- Debugging now shows memory usage and processing time. (1 April NEW)
- When debugging is enabled, the memory usage is also shown in the plugin indicator within HTML. (1 April NEW)
- 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::get_placeholder_title()
is now protected.AutoDescription_Generate_Title::title_for_terms()
now usesarray $args
for parameters.AutoDescription_Generate_Title::generate_title()
now usesarray $args
for parameters.- CSS and JS file identifiers have their duplicated
css
orjs
removed. Soautodescription-css-css
is nowautodescription-css
, and so forth. (3 March NEW)
- 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_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. (6 April NEW)
- 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. (3 March NEW)
- When using the plugin settings activation filter, new default options are still applied (which are also filterable). (3 March NEW)
- 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. (3 March NEW)
- The Term SEO box initialization now only happens on the term edit screens. (1 April NEW)
- 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. (3 March NEW)
- Empty delimiter PHP warning when the theme is doing it wrong and no separator has been provided. (3 March NEW)
- Improperly sanitized option, disclosed. Although, it holds no security treat as all options always go through multiple sanitation processes. (3 March NEW)
- PHP Warning in the robots.txt output. This will make subdirectory sitemaps work again. (3 March NEW)
- JavaScript undefined TypeError on mobile screens and Microsoft Edge. (5 March NEW)
The_SEO_Framework_Load::call_function()
contained wrong error handling. (3 March NEW)The_SEO_Framework_Load::call_function()
now converts and checks for$this
correctly. Evidently speeding up the plugin greatly. (3 March NEW)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. (6 April NEW)
- Deprecated:
AutoDescription_Detect::current_theme_supports()
, use corecurrent_theme_supports
instead.- 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. (6 April NEW)AutoDescription_DoingItRight::seo_column()
function, replaced byAutoDescription_DoingItRight::seo_bar()
to eliminate naming confusion. (5 March NEW)AutoDescription_Sitemaps::setup_sitemap_transient()
function, replaced byAutoDescription_Sitemaps::setup_sitemap()
to eliminate naming confusion. (1 April NEW)AutoDescription_Detect::is_locale()
function, replaced byAutoDescription_Detect::check_wp_locale()
to eliminate naming confusion. (6 April NEW)
- Removed:
- Open Graph plugins check from Canonical URL output, these are unrelated.
- Filter/Constant/Action change PHP comments from 2.3.0 to clean up code.
- Title generation
get_custom_field
argument. Useget_custom_field
and/ornotagline
instead. (6 April NEW)
- 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
(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
(3 March NEW)(string) the_seo_framework_metabox_priority
(1 April NEW)(int) the_seo_framework_term_metabox_priority
(6 April NEW)(bool) the_seo_framework_seo_bar_pill
(1 April NEW)(int) the_seo_framework_bother_me_desc_length
(1 April NEW)(array) the_seo_framework_description_settings_tabs
(6 April NEW)
- 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_ldjson_scripts
, 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.(string) the_seo_framework_shortlink_output
, added$post_id
parameter.(string) the_seo_framework_paged_url_output
, 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
. (1 April NEW)
- New:
- Constant Notes:
- New:
(bool) THE_SEO_FRAMEWORK_DISABLE_TRANSIENTS
. Note: Does not disable transients for pinging search engines(bool) THE_SEO_FRAMEWORK_PROFILE
. Profiles the plugin when debugging has been enabled.(bool) THE_SEO_FRAMEWORK_PROFILE_SPECIFIC
. Profiles the plugin more specifically (in the future, maybe).
- New:
- 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.
- I marked numerous functions with