Happiness can be found, even in the darkest of times, if one only remembers to turn on the light. – J.K. Rowling & Steve Kloves
Release highlights
- This update brings you up to 96% faster browser interaction, up to 30% faster browser rendering times, and up to 26% faster server response times.
- You can now use quick-edit to adjust meta titles and descriptions of all your posts and terms.
- New custom taxonomy settings are added, so you can quickly deindex custom taxonomies, or exclude SEO for them entirely.
- Well-known page builders that aren’t built upon shortcodes, like Elementor, Beaver Builder, and Siteorigin’s, now support meta description generation.
- The description generator is now far more intelligent–it can now recognize contractions, and other complex punctuations and marks (¡¿Que?! Y’all’dn’t’ve!? 「やった!」).
- WordPress 5.5 support is now integrated deeply. To get there, we had to implement new query listeners, browser observers, and persistent notices.
Graciously graceful
This update’s name is Grace, and for a good reason: the plugin listens to your inputs respectfully and does everything as you incline, as you would expect.
The SEO Framework’s response-and rendering times have substantially been reduced; everything’s much smoother and swifter since 5 years ago–back when it had fewer than 1 000 users.
At first glance, you probably won’t notice anything new after updating to 4.1. But, when you look closer, among 350 QOL changes, you’ll find improvements such as:
- Tapping a tooltip no longer accidentally activates related inputs.
- Only necessary REST-requests are made for primary-term support.
- Browser animations execute more naturally, like removing a notification.
- Switching a settings-tab can no longer cause staggered tab-content.
- The description generator now detects deeply nested HTML, improving the accuracy of intent.
You’ll also find many obscure new features, such as:
- A new accessible SEO Bar color has been added: Gray. It exclaims there was nothing to process.
- Fancy a custom sitemap stylesheet logo? Now you can upload one.
- You can now remove branding from social meta titles.
- Persistent notices may now show up, gracefully (more on this below).
You can find more than 340 other noteworthy changes in the detailed log below.
Persistent notices
TSF now stores some notices in your database, so they can be shown to you later, and sometimes even more than once. We call these “persistent notices”.
Persistent notices are awfully annoying. We know that. However, since plugin auto-updates are part of WordPress 5.5, we can no longer expect you to invoke an update manually.
These notices are used when we expect them to go unnoticed otherwise–they are conditional, and may only show up when all of these conditions are met:
- You have sufficient administrative capabilities or a matching user ID. For example, you must be able to install plugins.
- You are (or aren’t) on a specific administrative page. For example, we won’t show some notices on the block-editor.
- The time limit hasn’t expired. For example, the update-notice won’t show up after 7 days from updating.
- The view count hasn’t been reached, regardless of who has seen it. For example, we only show some notices 3 times.
- You haven’t dismissed it. There’s an X-button at the top-right.
If you find a notice reappearing indefinitely, you might have a stubborn caching plugin enabled. So, clear your site’s cache.
Core Sitemaps support
WordPress 5.5 brings new sitemaps. We added support for them, but we didn’t integrate with them. To explain briefly:
- Support: When you enable TSF’s sitemap, Core Sitemaps are disabled. When you disable TSF’s sitemap, Core Sitemaps will become accessible again.
- Integrate: Core Sitemaps does not listen to the indexing state enforced by TSF. This will cause issues with search engines.
Regardless, we don’t believe the Core Sitemaps are beneficial for most WordPress sites. We stubbornly kept our sitemap simple; it’s easier for us to maintain and faster search engines to process. Search engines crawl your pages more quickly using TSF’s sitemap, no matter your website’s size.
Nevertheless, TSF will integrate with Core Sitemaps in a future update. However, since we had fewer than two months to anticipate their integration, we couldn’t make this happen now.
Environment upgrade notes
WordPress 4.9 and 5.0 are no longer supported. Here’s why:
- Almost 75% of all WordPress sites are using version 5.1 or later.
- Newer versions of WordPress are faster, more reliable, and easier to work with; for both you and us.
- Supporting past versions takes time away that’s better used implementing new features.
Support the development
We hope you’ll love this update as much as we do. Please consider supporting us by giving an awesome review, get a license, or convince your friends and colleagues TSF is amazing!
Detailed log
Fast and steady wins the race.
> View code changes.
> View closed issues.
For everyone
- Added:
- New taxonomy settings:
- You can now exclude SEO support for any registered taxonomy.
- They are superseded by post type exclusions, however.
- You can now set
noindex
,nofollow
,noarchive
types for any registered taxonomy, instead of just default categories and tags.- They are superseded by post type robots, however.
- You can now exclude SEO support for any registered taxonomy.
- More sitemap features:
- You can now specify a custom logo for the sitemap header title–instead of being stuck using the one from Customizer.
- WordPress Core sitemaps land in WP 5.5, and they’re now supported.
- We don’t believe this Core addition is beneficial for TSF users, but we’ll explore its integration and are open to suggestions. We do welcome it, since it exposes many faults in other plugins and even in WordPress itself, which we had to fight off tirelessly in support. Until we fully integrate support for the Core sitemaps, this will happen:
- When you enable TSF’s “optimized” sitemaps, the Core sitemaps are disabled.
- When you disable TSF’s sitemaps, akin to using other sitemap plugins, you might get sitemaps that present errors in Google Search Console, because non-indexable posts are included therein too.
- When you disable TSF’s sitemaps, the WordPress Core sitemap link may be added back to the virtual robots.txt output.
- We don’t believe this Core addition is beneficial for TSF users, but we’ll explore its integration and are open to suggestions. We do welcome it, since it exposes many faults in other plugins and even in WordPress itself, which we had to fight off tirelessly in support. Until we fully integrate support for the Core sitemaps, this will happen:
- A new accessible SEO Bar color:
- You may now spot the new “undefined” gray-colored SEO Bar entries.
- This type is typically used when the parser can found no processable data.
- As before, it’s distinguishable from the other types with any color vision deficiency, even with the extremely rare (0.003% of the population) achromatopsia.
- May you prefer, when you enable symbols for warnings–this type will convey
--
(two hyphens).
- You may now spot the new “undefined” gray-colored SEO Bar entries.
- The smartest description generator, ever:
- Thanks to the intelligent content parsing brought in TSF v3.2.4–which has been vastly improved since–content generated by these page builders can now be used reliably for description generation:
- Elementor.
- Beaver Builder.
- Page Builder by SiteOrigin.
- Thanks to the intelligent content parsing brought in TSF v3.2.4–which has been vastly improved since–content generated by these page builders can now be used reliably for description generation:
- New social title features:
- You can now choose to remove the site title from autogenerated social titles (Open Graph, Twitter).
- This option will be enabled by default for new users but disabled for current users.
- When this option is disabled, it will continue with its standard evaluation.
- You can now choose to remove the site title from autogenerated social titles (Open Graph, Twitter).
- New quick-edit features:
- You can now set a custom meta title and description for each post and term via WordPress’s quick-edit interface.
- You’ll find that counters and other descriptive parts are now visible.
- Please be mindful that this feature affects performance negatively–but this is primarily caused by a bug in WordPress.
- You can now set a custom meta title and description for each post and term via WordPress’s quick-edit interface.
- New persistent notices:
- You may now see notices (re)appear that you can manually dismiss. This makes sure you won’t miss them, for you might’ve invoked a notice without loading the admin area directly afterward.
- The notices are outputted conditionally, and may:
- Appear only for some users with specific administrative capabilities, like installing plugins.
- Appear only on some pages.
- Not appear on some pages, to prevent obstructing your workflow.
- Appear only a few times.
- Appear only within a certain timeframe–e.g., for one day within invocation.
- Listen to your dismissal request–taking a single button press, either via AJAX or an HTML form.
- The notices are outputted conditionally, and may:
- You may now see notices (re)appear that you can manually dismiss. This makes sure you won’t miss them, for you might’ve invoked a notice without loading the admin area directly afterward.
- New taxonomy settings:
- Improved:
- Accessibility:
- The sitemap stylesheet now outputs specific table header and body tags for improved accessibility.
- Some sentences have been changed where some users struggled with before. For example, the SEO Bar now conveys what “title branding” means.
- You can now tap a tooltip-handler inside a label or link without accidentally activating the label, activating a button, or following the link. A second tap will propagate as a regular click.
- We normalized entity escaping for titles and descriptions, so you should now always see their output as intended on the edit-screens.
- When (single/double/triple) clicking on a title’s prefix-or additions hover-element, the focus ring of the title input no longer flickers. Instead, it remains solidly focussed.
- The “Remove the site name?” toggle no longer stretches its label on term edit, preventing accidental clicks.
- We touched up the title settings’ layout, so it’s easier to understand the repercussion of changes.
- AI generators:
- Descriptions:
- The description generator can now intelligently strip nested HTML elements (getter).
- The description generator has gone through another generational leap (parser/renderer):
- It is now able to discern between punctuation types for stripping leading characters. For example, an opening bracket will no longer be stripped from the start of a sentence, but closing brackets will.
- It now texturizes the input to see how sentences are built in any language, by discerning connector and closing punctuations next to word boundaries. For example, when a closing quote is found between two words (e.g., “we’re”), it’ll compound those two words as one, instead of believing the apostrophe is a closing punctuation type.
- It can now discern sentence structures that use colons, dashes, or other punctuation, and treat them as connecting.
- It is now able to discern Latin way of annotating questions or exclamations (¿¡qué!?), and will keep their leading punctuation intact.
- It will now strip trailing colons, dashes, and other Unicode connector punctuation.
- It will now stop counting trailing words when a connector, dash, mark, or ¡¿ are found.
- It can now strip leading punctuation, even when no final punctuation is found.
- Descriptions:
- Layout:
- The SEO Settings metaboxes are now a bit wider; 740px instead of 690px.
- This prevents the settings-tabs from collapsing for some languages.
- The (social/logo) image select/change button now updates its text on manual input accordingly.
- The primary term selector now loads in graciously and no longer bounces the interface on reload; these improvements are especially noticeable with slower server connections.
- When you select or remove an image via the image editor, the input URL field no longer animates–we found this to be annoying, especially since we added other image input field cues (like the on-hover preview card) since its inception.
- When you remove an image set via the image editor, the removal button now fades out twice as quickly, so it is more in line with the rest of the interface’s animation timing.
- Image previews now have a checkerboard background, so you can easily differentiate a transparent image, like a pro!
- The SEO Settings metaboxes are now a bit wider; 740px instead of 690px.
- Performance:
- Improved browser interaction response times by up to 96% (admin-area):
- We optimized the tooltip handler for performance:
- It no longer renders the tooltip twice on tap/click.
- It caches the tooltip elements, so it no longer has to perform expensive lookups on movement or change.
- It now only looks for active tooltip elements to remove on tap, instead of looping over all registered tooltip holders when using a touch device.
- Its arrow’s movement now binds to your monitor’s frequency, instead of your CPU’s. It can do this by waiting for the browser animation renderer’s invocation, so it no longer performs expensive calculations as fast as your computer’s processor can handle it; instead, it only processes at the speed of your monitor’s refresh rate (which is about 60~240 times per second, not 1500 times).
- At 4.6GHz on AMD’s Ryzen Zen 2, we went down to about 4~10% single-CPU-core usage, from 100%, at 60 and 144hz, respectively. Perfectly linear. Perfect code.
- We optimized the administrative browser scripts for performance, among using faster loops, and loosening our bridles with jQuery for element callers, event loaders, and property adjustments.
- We optimized the tooltip handler for performance:
- Up to 30% quicker browser rendering times (admin-area):
- We reduced CPU overhead during the load time of an administrative screen, by removing jQuery’s heavy function loader dependency, and using native JS instead.
- We optimized the Block editor’s loading time by removing superfluous REST requests that’d fetch terms for components that didn’t support the caller’s intention.
- The (social/logo) image preview icon no longer animates on-load.
- Up to 13% faster server response times on the admin-area, and 26% faster on the front-end:
- We mitigated auto-rectifying query-checks by preemptively forwarding more specific queries to each method in the plugin, removing needless processing overhead–especially for the sitemap and administrative areas.
- We optimized some sanitization callbacks, improving performance by about 4 to 5% per post rendered, without affecting the output.
- We improved plugin loading time by removing a (another) redundant class from the default loading stack.
- We also scrutinized the code (again), where we found a few minor points for improvement left after the overhaul of v4.0.
- We couldn’t find a reasonable way to make TSF any faster without sacrificing security or removing features. So, this is as fast as we can make it… for now.
- Improved browser interaction response times by up to 96% (admin-area):
- Accessibility:
- Changed:
- Post type and taxonomy support:
- The General Settings’ “Post Types” tab has been renamed to “Exclusions”.
- We added support for post types and taxonomies that do not have rewrite capabilities.
- We excluded them in the past because many devs don’t know the difference between
rewrite = false
andpublic = false
(looking at you too, Automattic). This caused a rich profusion of issues (and users wasting our time with support for third-party crap). With WP sitemaps coming (which includes non-rewriteable post types and taxonomies), it’ll be a common issue, and everyone can suffer. So, we can be complacent about that and revert our rewrite exemption rule. Moreover, we now allow full control over post type and taxonomy support. So, that’s why we’ll, henceforth, support all rewritable post types and taxonomies by default, as long as they’re publicly queryable.
- We excluded them in the past because many devs don’t know the difference between
- The Formats taxonomy (
post_format
) now hasnoindex
applied for all sites installing or upgrading to TSF v4.1. We believe this post type is registered incorrectly, and that it should only be queryable via developers, not visitors.
- User edit:
- Users with the capability
edit_posts
(Contributor) can now set Facebook and Twitter metadata, instead of users with capabilitypublish_posts
(Author) only; since contributors can be assigned as authors of posts, as well.
- Users with the capability
- Post type and taxonomy support:
- Removed:
- Feed support:
- The first
<h2>
content is no longer added back in the excerpt of feeds. This didn’t work anyway when using Gutenberg. And the code we wanted to implement to fix that (/<h2.*?>(.*?)<\/h2>[^>]*?>(?=$content)/
) could take half a second per excerpt to resolve (yes, that’s slow.).- This also fixes a bug, where when the first
<h2>
entry of your post contains content exactly matching in the feed’s “transformed-to-excerpt”-content, it will no longer be removed from that excerpt.
- This also fixes a bug, where when the first
- The first
- Accessibility:
- Placeholders on various inputs are no longer prefilled by your server. Your browser can fill these in via our JavaScript scripts (when enabled, which is highly likely).
- This reduces the load on your server and removes the need for us to duplicate our work, visualizing how the front-end would generate certain areas.
- We upheld this for so long because WordPress used to be controllable via text-only browsers. Now, since the advent of the Block-Editor, and with accessible, dynamic browsers, this is no longer necessary.
- Placeholders on various inputs are no longer prefilled by your server. Your browser can fill these in via our JavaScript scripts (when enabled, which is highly likely).
- Feed support:
- Fixed:
- Upgrade:
- Concurrent upgrades can no longer happen, which, although rare thanks to earlier mitigations, might’ve caused upgrading your options twice.
- Settings:
- When you disable a post type, its robots-exclusion settings no longer get automatically rendered as checked by accident.
- You can now store a lone
0
as the (meta, Open Graph, Twitter) post title and description.- This was already possible for terms.
- Don’t count on it being useful, or supported throughout the system–you’ll find it being transformed to “Untitled” on some parts. You’ll also see false-negative reports when using a lone
0
as input.- This is an intermediate step towards perfect consistency.
- We’ve considered making it seamless, but since this is a bad title/description, it’s not worth the tradeoff for smelly, unmaintainable code.
- See PHPdoc @
the_seo_framework()->set_and_strlen()
.
- You can no longer reset the global SEO settings without confirming it by clicking the button before all browser assets are loaded.
- UI bugs and annoyances (that don’t affect the front-end output):
- You can no longer empty text fields from TSF via Edge’s
ms-clear
button (X at the side of the input field), since it doesn’t invoke the proper browser events we rely upon. - Settings and post-edit tabs’ contents can no longer stagger when you hold an arrow key switching tabs. So, they now always behave predictably.
- Settings and post-edit tabs’ containers now have their height locked before switching tabs’ content, preventing unnecessary double layout shifting.
- Settings tab’s contents now correctly match the active tab when navigating back to the settings page (again).
- Prevented unnecessary layout shift on the settings page of notifications from other sources (plugins, themes, core).
- When clicking on the character counter subsequently, the AJAX loader will now reappear correctly.
- Addressed an issue where when you double-clicked on the title prefix on an RTL-based site that causes title’s selection to fail.
- The title input fields no longer trim the visual outline on input-focus when using WP 5.3 or later.
- The Homepage SEO Settings question mark is now aligned correctly when using WP 5.5 or later.
- On the Block editor, if you had more than 2 categories selected and have then deselected all categories, and then register a new category (and keep it selected), and then select another category, the newest category will now have its name correctly populated in the primary term selector. Yup.
- On the Block editor, term names are no longer double-escaped inside the primary term selector.
- When using WP 5.5 or later, if you hit the new post-meta-box order buttons, the tab labels will now also automatically try to refit themselves (by hiding their text when necessary).
- We made sure that any future change will automatically be supported, thanks to the use of resize observers. There’s an edge-case for Edge, which still relies on our archaic implementation, however.
- You can now use keyboard navigation to select a title separator.
- jQuery 3.5.1 is now supported–we faced issues with the load sequence using Firefox and Edge.
- Tooltips no longer stick around after you click them using a movable pointer (non-Touch), resolving egregiously annoying behavior on labels and links that have tooltip support.
- Closing a TSF-powered postbox with invalid input will no longer cause it to get stuck closed. Instead, you should now see a validation message appear.
- When you try to hide a TSF-powered postbox with invalid input, it will now reappear with a validation message since you otherwise can’t submit the page’s form.
- This only works when using the Classic Editor, and on the SEO Settings page. We couldn’t reedify this fix in Gutenberg–but, that page isn’t affected by the form-passing issue.
- You can no longer empty text fields from TSF via Edge’s
- Post type and taxonomy support:
- When a post type or taxonomy isn’t publicly queryable, TSF won’t consider it as a supported anymore.
- You can no longer select the primary term for taxonomies that aren’t supported (not publicly viewable or otherwise disabled via the TSF interface).
- Upgrade:
For translators
- Added:
- New sentences have been added.
- Changed:
- We’re now calling “blog name” “site title” throughout the plugin.
- WordPress shows the “Site Title” at “General Settings”, but stores it in the database as “blogname”. We can’t expect the user to be aware of this discrepancy.
- We’re now calling “blog name” “site title” throughout the plugin.
- Updated:
- POT translation file.
- As always, various sentences have been updated for clarity.
- Improved:
- Removed passive voice from some sentences.
For developers
- Database note: This plugin now uses TSF database version
4103
. - Constant notes:
- Added:
THE_SEO_FRAMEWORK_SETTINGS_CAP
, user-definable.- Use this instead of filter
the_seo_framework_settings_capability
; the filter is marked for deprecation.
- Use this instead of filter
THE_SEO_FRAMEWORK_AUTHOR_INFO_CAP
, user-definable.
- Removed:
THE_SEO_FRAMEWORK_NETWORK_OPTIONS
, was unused.
- Added:
- Option notes:
- For PHP constant
THE_SEO_FRAMEWORK_NETWORK_OPTIONS
(equals db indexautodescription-network-settings
):- Removed. That’s it.
- For PHP constant
THE_SEO_FRAMEWORK_SITE_OPTIONS
(equals db indexautodescription-site-settings
):- Added:
disabled_taxonomies
, array.noindex_taxonomies
, array. Readable viathe_seo_framework()->get_option( the_seo_framework()->get_robots_taxonomy_option_id( 'noindex' ) );
.nofollow_taxonomies
, array. Readable viathe_seo_framework()->get_option( the_seo_framework()->get_robots_taxonomy_option_id( 'nofollow' ) );
.noarchive_taxonomies
, array. Readable viathe_seo_framework()->get_option( the_seo_framework()->get_robots_taxonomy_option_id( 'noarchive' ) );
.sitemap_logo_url
, string.sitemap_logo_id
, int.social_title_rem_additions
, int, 1 or 0.
- Removed:
- Note: Downgrade compatibility will be maintained for the next year, or two major updates; whichever comes first. This means that these options are updated by the plugin according to the latest inputted values, but shouldn’t be used or written to elsewhere.
category_noindex
, now is$options['noindex_taxonomies']['category']
.category_nofollow
, now is$options['nofollow_taxonomies']['category']
.category_noarchive
, now is$options['noarchive_taxonomies']['category']
.tag_noindex
, now is$options['noindex_taxonomies']['post_tag']
.tag_nofollow
, now is$options['nofollow_taxonomies']['post_tag']
.tag_noarchive
, now is$options['noarchive_taxonomies']['post_tag']
.
- Other:
$options['noindex_taxonomies']['post_format']
is now enabled for all new users by default.
- Fixed:
disabled_post_types
should now have its warned and default state reflected in the admin UI when you filter those in.
- Added:
- For PHP constant
- Method notes:
- For object
the_seo_framework()
:- Added:
get_public_taxonomies()
get_forced_supported_taxonomies()
s_disabled_taxonomies()
s_taxonomies()
get_robots_taxonomy_option_id()
detect_non_html_page_builder()
uses_non_html_page_builder()
output_js_title_data()
output_js_description_data()
get_home_title_additions()
prepend_tax_label_prefix()
get_latest_category_id()
- Changed:
is_taxonomy_public()
now also returns public taxonomies without rewrite capabilities.get_hierarchical_post_types()
now also returns post types without rewrite capabilities.get_nonhierarchical_post_types()
now also returns post types without rewrite capabilities.trim_excerpt()
:- Now texturizes the excerpt input, improving accuracy with included closing & final punctuation support.
- Now performs even faster queries, in most situations. (~0.2ms total (bad case) @ PHP 7.3/PCRE 11).
- Now recognizes connector and final punctuations for preliminary sentence bounding.
- Leading punctuation now excludes symbols, special annotations, opening brackets and quotes, and marks used in some latin languages like ¡¿.
- Is now able to always strip leading punctuation.
- It will now strip leading colon characters.
- It will now stop counting trailing words towards new sentences when a connector, dash, mark, or ¡¿ is found.
- Now returns encoded entities once more. So that the return value can be treated the same as anything else revolving around descriptions–preventing double transcoding like
&amp;amp; > &amp; > &
instead of&amp;
.
get_title()
now has a third$social
parameter.get_custom_field_title()
now has a third$social
parameter.get_generated_title()
now has a third$social
parameter.get_generated_open_graph_title()
now has a third$social
parameter.use_title_branding()
now has a second$social
parameter.output_js_title_elements
now only outputs a legacy reference and is marked for deprecation.output_js_description_elements
now only outputs a legacy reference and is marked for deprecation.output_character_counter_wrap
no longer marks up the counter with thedescription
HTML class.s_excerpt
movedfigcaption
,figure
,footer
, andtfoot
, fromspace
toclear
, meaning that it’ll clear those elements, instead of adding spaces around them.strip_tags_cs
now detects nested elements and preserves that content correctly–as if we’d pass through scrupulously beyond infinity.get_hierarchical_taxonomies_as()
now filters taxonomies more graciously–expecting broken taxonomies returned in the filter.get_paged_urls()
no longer memoizes its return value.s_singleline()
:- Made this method about 25~92% faster (more replacements = more faster). 73% slower on empty strings (negligible).
- Now also strips form-feed and vertical whitespace characters–might they appear in the wild.
s_knowledge_type()
can no longer fall back to its previous value–instead, it will fall back to a generic value.
- Removed:
rss_uses_excerpt()
, use\get_option( 'rss_use_excerpt' )
instead.the_content_feed()
, with no alternative available.get_site_option()
, with no alternative available. Was never used.do_dismissible_sticky_notice()
, with no alternative available. Was never used.generate_dismissible_sticky_notice()
. Was never used. Useregister_dismissible_persistent_notice()
instead.notices
, was marked private.handle_update_post
, relied on security only valid within the plugin. It still exists, but can no longer be accessed directly via the API.verify_seo_settings_nonce
, relied on security only valid within the plugin. It still exists, but can no longer be accessed directly via the API.
- Deprecated:
is_post_type_page()
, with no alternative available.is_taxonomy_public()
, usethe_seo_framework()->is_taxonomy_supported()
instead.the_seo_framework_get_option()
. Usethe_seo_framework()->get_option()
instead. Was never advertised to be used.get_home_page_tagline()
, use the aptly namedget_home_title_additions()
instead.permalink_structure()
, useget_option( 'permalink_structure' );
instead.
- Added:
- For object
\The_SEO_Framework\Bridges\Feed
(new!):- Added:
- (static)
get_instance()
- (static)
prepare()
- (static)
- Added:
- For object
\The_SEO_Framework\Bridges\Ping
:- Changed:
engage_pinging_cron()
now returns whether its engagement was successful.
- Changed:
- For object
\The_SEO_Framework\Bridges\Scripts
:- Changed:
get_list_edit_scripts()
, now depends on title and description scripts.
- Changed:
- For object
- Object notes:
- For object
\The_SEO_Framework\Interpreters\SeoBar
:- Added: constant
STATE_UNDEFINED
; equals0b0000
(bitwise naught); creates the gray undefined SEO Bar entry.
- Added: constant
- Object
\The_SEO_Framework\Bridges\Feed
is new. - For object
the_seo_framework()
:- Changed:
- It no longer loads
\The_SEO_Framework\Feed
class.- This class has been removed.
- It no longer loads
- Changed:
- For object
- Filter notes:
- Added:
the_seo_framework_forced_supported_taxonomies
, used to adjust an array of forced supported taxonomies, so no settings can be adjusted for them.the_seo_framework_taxonomy_disabled
, used to overwrite taxonomy disabled state.the_seo_framework_shortcode_based_page_builder_active
, used to relay an active (conflicting) page builder that renders content dynamically is active.the_seo_framework_detect_non_html_page_builder
, used to relay an active (conflicting) page builder is used for the current page.the_seo_framework_sitemap_items
, used to filter all valid post IDs for the sitemap.
- Changed:
the_seo_framework_general_settings_tabs
‘sposttypes
entry has been renamed toexclusions
.the_seo_framework_use_title_branding
now has a third parameter,$social
.the_seo_framework_list_table_data
now hasdoctitle
anddescription
indexes in its first parameter.
- Removed:
the_seo_framework_network_settings
, was unused.
- Added:
- JS notes:
- Method notes:
- Added:
tsfDescription.getInputElement()
tsfDescription.getStateOf()
tsfDescription.updateStateOf()
tsfDescription.updateStateAll()
tsfTitle.getInputElement()
tsfTitle.getStateOf()
tsfTitle.updateStateOf()
tsfTitle.updateStateAll()
- Changed:
tsfDescription
andtsfTitle
now handle legacy input elements (discoverable viaHTMLElement.dataset.hasLegacy
) for the unforeseeable future.- You should update to the newer input elements data handlers if you want to handle their counters and hover elements. This allows for multiple meta title and meta descriptions inputs per page.
- See
the_seo_framework()
methodsoutput_js_title_data()
andoutput_description_title_data()
.
- See
- You should update to the newer input elements data handlers if you want to handle their counters and hover elements. This allows for multiple meta title and meta descriptions inputs per page.
tsfSocial.initTitleInputs
now expectsrefNa
to be registered in its first parameter object.
- Deprecated:
tsfDescription.getState()
, usetsfDescription.getStateOf()
instead.tsfDescription.updateState()
, usetsfDescription.updateStateOf()
instead.tsfTitle.getState()
, usetsfTitle.getStateOf()
instead.tsfTitle.updateState()
, usetsfTitle.updateStateOf()
instead.
- Added:
- Event notes:
- Added:
window.tsf-post-type-support-changed
, used to test for post type change states.window.tsf-taxonomy-support-changed
, used to test for taxonomy change states. Be warned, it’s tricky.
- Changed:
window.tsf-tooltip-reset
now debounces by 25ms, so now you can call it in a loop without worrying about impacting performance.window.tsf-flex-resize
may now containevent.detail.target
data–depicting which flex wrapper is triggered–it should, for now, just be the original one.
- Added:
- Object notes:
- Added:
tsfTitle.untitledTitle
tsfTitle.privatePrefix
tsfTitle.protectedPrefix
tsfTitleL10n
(=== window.tsfTitle.l10n
) now has the following indexes available:i18n.privateTitle
i18n.protectedTitle
params.stripTitleTags
- Removed:
tsfSettingsL10n
(=== window.tsfSettings.l10n
) no longer has the following indexes available:i18n
, which had:confirmReset
privateTitle
protectedTitle
params.refTitleLocked
params.refDescriptionLocked
tsfTitleL10n
(=== window.tsfTitle.l10n
) no longer has the following indexes available:states.useTagline
states.useSocialTagline
states.additionPlacement
states.additionValue
states.defaultTitle
tsfDescriptionL10n
(=== window.tsfDescription.l10n
) is no longer available.tsfPostL10n
(=== window.tsfPost.l10n
) no longer has the following indexes available:params.stripTitleTags
tsfTermL10n
(=== window.tsfTerm.l10n
) no longer has the following indexes available:params.stripTitleTags
params.prefixesForcedDisabled
- Deprecated:
tsfTitle.states.useTagline
, usetsfTitle.states.addAdditions
instead. Applies totsfTitle.getStateOf()
andtsfTitle.updateStateOf()
.
- Added:
- Template notes:
- Added:
wp.template( 'tsf-disabled-taxonomy-help' )
is now available on the settings page.wp.template( 'tsf-disabled-taxonomy-from-pt-help' )
is now available on the settings page.wp.template( 'tsf-disabled-title-additions-help' )
is now available on the settings page.
- Added:
- Method notes:
- Fixed:
- Closed some unclosed HTML elements.
- Moved some illegal HTML element placements, so they’re now legal.
- The Block editor’s primary term selector no longer binds to unsupported taxonomies.
- This was graciously handled before; since PHP never forwarded data of unsupported taxonomies.
- This also saves an HTTP request per unsupported taxonomy, where we would otherwise get its listed terms.