This minor update makes the SEO Bar easier on the eyes. We also improved compatibility with bbPress, wpForo, and WooCommerce, and added compatibility with another thousand plugins via Advanced Query Protection’s new plugin query variable detection. We also fixed a couple of bugs, added and improved syntax detection of SEOPress and Rank Math, introduced new APIs, dusted off some code, refined tooltip placement, added Site Icon as a fallback for the sitemap title logo, and perfected support for Custom Post Types by detecting their changed arguments.
Detailed log
> View code changes.
> View closed issues.
For everyone
- Added:
- Advanced Query Protection now detects all plugin-injected query variables.
- SEOPress syntax is now detected for titles and descriptions. The SEO Bar will warn you about leftover syntax.
- Hidden forums of bbPress now have their forums, topics, and replies removed from the sitemap by forcing “noindex” onto them.
- The SEO Bar will also explain this. No amount of overriding will make the hidden forum public, so indexing overrides are ignored.
- The wpForo page can now be detected by the SEO Bar and will exclaim that some or all assertions aren’t possible when wpForo’s SEO is enabled.
- The Site Icon (set at “Customizer > Site Identity”) is now also considered as a sitemap stylesheet fallback logo.
- If you do not like this change, go to “SEO Settings > Sitemap Settings > Style,” and deselect the checkbox under “Header Title Logo.”
- Improved:
- After two years of fiddling, we finally found a way to round the edges of the SEO Bar. Finally, some optic respite.
- The problem was that we’re using flexbox, which doesn’t yield information about wrapping, so we must rely on hiding the overflow. But relatively positioned tooltips still need to overflow beyond their parent; otherwise, we cannot see the tooltip. After years of trying, we finally figured that by making the tooltip relative to a grandparent, we could still work with hiding overflows. So what was left to do was calculate the relative positioning between the grandparent and parent, effectively perfecting the tooltip script.
- Improved performance by (re-)refactoring several code operations: less work, same result.
- Tooltips are now more naturally aligned relative to the container and now support relativity towards super containers (applied to the SEO Bar) to be easier on your eyes.
- Tooltips render faster once more: On our workstation, our scripts can now spawn 450 of them every second, and the arrow below the tooltip polls up to 700hz.
- After two years of fiddling, we finally found a way to round the edges of the SEO Bar. Finally, some optic respite.
- Changed:
- The first-time installation notice is now displayed thrice instead of once within a 2-minute timeframe (whichever comes first), whereafter, it disappears forever.
- Removed the post type name from the SEO Settings tab to ease translation and improve Gutenberg sidebar support.
- Added support for wpForo v2.0 and later (but dropped support for earlier versions).
- They had no deprecation route for us to follow, plus we cannot support both versions indefinitely. We also have no data on how many users use the latest version of TSF with wpForo v1.x.
- When the sitemap logo set in the SEO settings is deleted from your media library, it will no longer try to fall back to other methods’ logos. You should restore the image instead, clear the selected image option, or pick a new one.
- Fixed:
- When a pagination overflow is requested for the paginated static frontpage, TSF now properly detects WordPress’s intention (it provides the last page instead of the first).
- When stripping tags, elements that start with exactly the same characters as others won’t be preemptively closed. Listing all faults:
a
elements can no longer be closed byabbr
,address
,aside
, andaudio
(but notarea
, since that is a void element).b
elements can no longer be closed bybdo
,bdi
,blockquote
, andbutton
(but notbr
, since that is a void element).i
elements can no longer be closed byiframe
andins
(but notinput
andimg
, since those are void elements).- This bug was not replicable on anyone’s site since we do not AI-strip
a
,b
, nori
elements in our contexts (we leave those as inline text). So, eh… why did we write this out? Ah, yes. Open Source means sharing information.
- Rank Math variable syntax is now updated to reflect the real world instead of the buggy world Yoast SEO lives in.
- Post types that lost the support of a feature will no longer have data used from the missing feature.
- For example, if a post type doesn’t support titles, you will always get “Untitled” as an SEO title unless you set one manually. If a post type no longer supports the “excerpt” field, it won’t be used for description generation anymore.
- This is a long-standing bug in WordPress and probably 99% of other plugins. We were diligent enough to fix our part in TSF.
- Terms that have child terms with posts no longer have their SEO meta settings erroneously indicate
noindex
is the default state.- This also affects quick-edit and the SEO Bar.
- Addressed a regression in the Block Editor where TSF’s tooltips were rendered behind other elements.
- Addressed a visual bug where the homepage title location was incorrectly assigned for “left” on-load.
- Addressed a visual bug where the homepage’s default title was overwritten by the Site Title setting when a custom home-as-page meta title was set via post metadata.
- Addressed an issue where the thumbnail wasn’t set as a potential Social Image placeholder for WooCommerce product categories.
- Addressed an issue where WooCommerce’s shop page was recognized as an editable Post Type Archive.
- TSF recognizes it as a page and shop, not a PTA, so TSF’s Post Type Archive settings had no effect. TSF now filters this PTA from its settings.
- We understand WooCommerce sets this up this way because setting up a page as a shop isn’t foolproof. Still, their workaround causes issues in development.
- Addressed a regression where the post title example on the SEO Settings page wasn’t trimmed when over 60 characters.
For translators
- Added: New translations are available.
- Updated: The POT file contains new translations.
For developers
- Methods in object
The_SEO_Framework\Load
(callable viatsf()
andtheseoframework()
):- Added:
has_seopress_syntax()
determines if the input text has transformative SEOPress syntax.- This is used to determine leftover syntax after using Transport.
is_post_type_archive_supported()
detects if the current or inputted post type’s archive is supported and not disabled.is_term_populated()
tests whether the term returns any post on the front end.get_admin_issue_count()
returns the number of issues registered.get_admin_menu_issue_badge()
returns formatted text for the notice count to be displayed in the admin menu as a number.
- Changed:
convert_markdown()
can now process with either{
or}
within Markdown blocks.- The regex used is also vastly optimized.
get_current_post_author_meta()
now returns null when no post author can be established.get_image_uploader_form()
, added ‘button_class’ as a supported index for$args
.has_rankmath_syntax()
, actualized the variable list.is_query_exploited()
now blocks any publicly registered variable requested to the home-as-page.page()
now returns the last page on pagination overflow, but only when we’re on a paginated home-as-page.strip_tags_cs()
, elements with that start with exactly the same text as others won’t be preemptively closed.twitter_image()
, removed support for the long deprecatedtwitter:image:height
andtwitter:image:width
.- The following methods now test for post type support. All methods that rely on post type data are affected.
fetch_excerpt()
,'excerpt'
for excerpt parsing, and'editor'
for content parsing.get_generated_single_post_title()
,'title'
for title parsing.get_post_content()
,'editor'
for content parsing.get_current_post_author_id()
,'author'
for user ID parsing.
- Added:
- Filter notes:
- Added:
the_seo_framework_public_post_type_archives
, boolean. Do not use; fix your post type instead.the_seo_framework_supported_post_type_archive
, boolean.- The value passed also read the value from filter
the_seo_framework_supported_post_type
.
- The value passed also read the value from filter
the_seo_framework_top_menu_args
, array. Allows adjusting the menu name, icon, etc.the_seo_framework_top_menu_issue_count
, int. Allows adjusting the issue count number. Don’t overwrite, but increment it!- Set to
0
atPHP_INT_MAX
to disable this feature. - If set above 0, necessary styles are loaded.
- Set to
- Added:
- Changed:
- (JS)
tsf-resize
now fires once every 50ms, instead of 100ms.
- (JS)
- Other:
- Condensed code, such as removing needless quotes from administrative HTML=”attributes”.