Sybre Waaijer
Forum Replies Created
-
Hi Harald,
LinkedIn likely rejects your Open Graph image for two reasons:
1. Missing dimensions: The
og:image:widthandog:image:heighttags are missing. LinkedIn requires these to avoid downloading the image to calculate its size, which can cause LinkedIn to reject the image on failure.
2. Square ratio: The image is 1852×1752. LinkedIn expects a 1.91:1 landscape ratio (e.g., 1200×627).To fix these issues, use the Select Image button in the Social settings instead of a URL. Selecting from the Media Library lets you crop the image to the correct dimensions. It also ensures that the width and height tags are generated because TSF can store the image ID for image metadata retrieval.
To bypass LinkedIn’s cache during testing, append a query string like
https://example.com/?v=1in the Post Inspector.Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Sitemap is lockedI’m glad you found the cause!
Some backstory: the sitemap sets a lock when it’s building a cached copy. This prevents it from becoming a denial-of-service attack vector. The lock is released once the sitemap is built, but it cannot be released if the process crashes. The lock is automatically released after 180 seconds or PHP’s max execution time (whichever is smaller).
In any case, if you don’t want the
landing_pagepost type to appear in the sitemap, don’t you also want it to be unindexable? It might then be easier to apply “noindex” to the post type; this will also remove the posts from the sitemap.Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Multiple BreadcrumbHello!
Breadcrumbs are primarily navigation for visitors. They should show one clear path through the site, not every tag, category, or taxonomy relationship a post has. Tags, especially, are topic labels, not a hierarchy, so they usually make poor breadcrumb items.
TSF generates one breadcrumb trail. For posts with multiple hierarchical terms, you can set the primary term to reflect how visitors should understand and navigate the site. For custom post types, I recommend using the taxonomy hierarchy that reflects the actual site structure.
If this is only meant to influence search engines, I would avoid it. Search engines are best served by breadcrumbs that match useful, visible navigation. Adding extra breadcrumb paths just because the post has multiple tags or taxonomies can make the page less clear.
What problem are you trying to solve for visitors? If they need to discover related topics, visible tag/taxonomy links near the post content are usually more helpful than multiple breadcrumb trails. If you have a specific visitor-facing navigation layout in mind, please describe it, and I can point you toward the best option.
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Missing Field “image”Hello!
I looked at that page, and the image field is provided. Have you been able to address the issue since you opened this support topic? Or is another page affected than the one you posted? Thanks!
I tried to implement this in The SEO Framework. Upon testing, I ran into major issues with the current design of GeoDirectory’s compatibility layer. The way it currently works is fundamentally incompatible with third-party SEO plugins and breaks their expected behavior in a way that cannot be reliably worked around on our end. None of The SEO Framework’s data could load reliably on any GeoDirectory page without intricate and fragile workarounds.
GeoDirectory’s compatibility layer is doing far too much in a global
get_post_metadatahook, and it is now breaking third-party SEO plugins that rely on standard WordPress metadata APIs.The core problem is this: on GeoDirectory single pages, GeoDirectory compatibility code rewrites normal post metadata reads, causing them to return the details template page’s metadata instead of the actual listing’s metadata. This is not limited to layout metadata. It affects downstream plugin behavior because the rewrite occurs below the plugin layer, within a core metadata hook.
That is already bad enough, but the “preserve SEO metadata” logic is even worse:
1. It uses a local
$reserve_post_metaflag with hardcoded vendor checks.
2. There is no filter to declare “this is an SEO plugin whose metadata should be preserved”.
3. There is no generic compatibility contract for third parties.
4. Even the preservation path is inconsistent: the detection logic recognizes multiple SEO plugins, but the merge-back logic only restores Yoast and SEOPress-prefixed keys.This design makes core metadata semantics depend on which plugins and themes GeoDirectory happens to know about. That is not a compatibility layer. That is a global metadata router with vendor allowlists.
Why this is bad:
1. It breaks interoperability for any plugin that uses standard
get_post_meta()bulk reads or expected keyed reads.
2. It forces third parties into brittle plugin-specific workarounds instead of letting them rely on WordPress core behavior.
3. It makes compatibility effectively infeasible unless a plugin is explicitly vendor-whitelisted by GeoDirectory.
4. It creates silent failures. A plugin can appear to “work”, but custom metadata is ignored, and the plugin falls back to generated defaults.
5. It is not future-proof. Every new SEO or metadata-heavy plugin now depends on GeoDirectory maintainers knowing it exists and special-casing it correctly.Why a TSF compatibility layer is not really feasible until this is resolved:
1. The breakage happens below TSF, inside GeoDirectory’s interception of core metadata reads.
2. TSF cannot reliably distinguish “template inheritance” from “metadata corruption” after the read has already been rewritten.
3. Any workaround on our side becomes a patch over undefined behavior, not a real compatibility layer.
4. As long as GeoDirectory conditionally rewrites core metadata based on hardcoded plugin/theme checks, third-party compatibility will always be partial and fragile.Actionable steps:
1. Stop rewriting bulk post-meta reads for third-party plugin data on GD single pages.
2. Restrict template-page metadata inheritance to explicit layout/template keys only, not arbitrary plugin metadata.
3. Add a filter around the “preserve third-party SEO metadata” decision so unknown plugins can opt in without being hardcoded.
4. Add a filter for declaring preserved meta prefixes or explicit meta keys.
5. Add a filter or opt-out around theget_post_metadataoverride itself so third parties can bypass it during their own reads.
6. Remove vendor-specific assumptions from this path wherever possible.
7. Add tests for an unknown third-party plugin that uses standard WordPress metadata reads, both bulk and keyed.
8. Document exactly which metadata paths GeoDirectory rewrites and under what conditions.Until this is fixed, third-party SEO compatibility will remain unreliable by design. I will keep it at the snippet plugin for now and park my planned integration of TSF’s SEO variable system until this is resolved.
I’m not willing to ship code that’s half-broken by design and creates silent failures for unsuspecting users. I hope GeoDirectory can address this soon so we can move forward with a real compatibility layer instead of a patchwork of vendor-specific hacks.
If you could reopen the GitHub repo, I can provide quick and actionable feedback on any proposed changes to address this.
Hi efa!
The Local extension outputs LocalBusiness structured data, which requires a physical address by spec — it is not the right fit for a service-area business that operates from a home office without a public-facing location.
For your situation, Google Business Profile is the better tool. It is specifically designed to handle service-area businesses and lets you:
1. Set up your profile as a “service-area business” so your address is hidden from the public.
2. Define the areas you serve (cities, postal codes, regions) instead of showing a street address.
3. Turn off “Show business address to customers” in your profile settings.Google’s own instructions for this:
– Manage your service areas: https://support.google.com/business/answer/9157481
– Hide your address (see “Remove your address”): https://support.google.com/business/answer/2853879Google Business Profile also populates the knowledge panel and Maps results for local searches, which is where the real local SEO impact comes from. The structured data from the Local extension supplements that, but does not replace it — and without a public address, LocalBusiness structured data is incomplete by definition.
The image URL field in the Local extension settings is optional, so that part is not a blocker. But the address requirement reflects the schema.org spec itself, not something we can work around.
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Quick edit and bulk editHi Ralf!
Quick edit is available — when you hover over a post or page in the list table and click “Quick Edit”, you will see fields for Meta Title, Meta Description, Canonical URL, Redirect URL, robots settings, and Article Type (via Articles extension). These work per individual post, including with WPML translations (each translation is its own post).
Bulk edit for titles and descriptions, however, is intentionally not supported. We only offer bulk editing for robots’ settings (indexing, link following, archiving) and Article Type. The reason is that Google explicitly recommends unique descriptions for every page:
Identical or similar descriptions on every page of a site aren’t helpful when individual pages appear in search results. Wherever possible, create descriptions that accurately describe the specific page. — Google Search Central
The same principle applies to titles. Google will actively override duplicate titles with its own generated versions:
Here are the most common issues we see with title links in search results […]: Micro-boilerplate text in <title> elements — When there are repeated boilerplate text in <title> elements for a subset of pages within a site. — Google Search Central
A bulk edit field for titles and descriptions would primarily enable setting the same (or very similar) text across many pages at once, which runs counter to what search engines expect. My design philosophy with quick edit — one post at a time — naturally encourages unique content for each page.
For your three-language WPML setup, quick edit should work well: each language version is a separate post in the list, so you can inline-edit them individually right from the post list.
- This reply was modified 3 weeks ago by Sybre Waaijer. Reason: typo
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Meta descriptionsHello!
I wrote a detailed article on exactly how this works here: https://kb.theseoframework.com/kb/explaining-the-description-generator/.
The getter-phase notes that it strips: sole link paragraphs, all shortcodes, and all headers, images, scripts, lists, forms, etc. It also removes all leftover HTML.
It only gets from the Post excerpt or content fields. If the excerpt is filled, it will only use that.
Hi there!
Those tables are completely inert once Rank Math is deactivated. Nothing queries them, so they do not affect your site’s performance or caching — they just take up a bit of disk space.
There is no urgency to remove them, but if you prefer a clean database, you can safely drop them all. TSF does not use any of them:
–
wp_rank_math_404_logs
–wp_rank_math_analytics_gsc
–wp_rank_math_analytics_inspections
–wp_rank_math_analytics_objects
–wp_rank_math_internal_links
–wp_rank_math_internal_meta
–wp_rank_math_redirections
–wp_rank_math_redirections_cache(Replace the
wp_prefix with your actual table prefix if you changed it.)You can drop all eight via phpMyAdmin or any database management tool. If you already ran Transport (our migration extension), your SEO data has been migrated into TSF’s own storage, and the original Rank Math entries in the common tables (postmeta, termmeta) were cleaned up as part of that process.
Regarding the
wp_actionscheduler_*tables — those are NOT from Rank Math. They belong to the Action Scheduler library, which is shared by multiple plugins. WooCommerce is the most common plugin that uses it, but other plugins may rely on it as well. Deleting those tables could break functionality in any plugin that depends on Action Scheduler.If you want to check whether anything besides Rank Math is still using them, open phpMyAdmin, go to the
wp_actionscheduler_actionstable, and search the “hook” column with a NOT LIKE filter for%rank_math%. If that returns no rows, nothing else is using it. But if it returns rows, other plugins depend on those tables, so you should leave them alone.Either way, Action Scheduler automatically cleans up completed and canceled entries after about 31 days. So any leftover Rank Math rows in those tables will purge themselves over time as long as another plugin (like WooCommerce) is still active and loading Action Scheduler.
In short: you can drop the eight
rank_mathtables freely, but keep theactionschedulertables unless you are certain no other plugin depends on them.Thank you for giving The SEO Framework a try!
Variable/dynamic placeholders in meta titles are not yet natively available in TSF. I have been tracking this as a feature request since 2017, but demand has stayed substantially low, so it has not been prioritized. Most of the underlying automation is already written — all the transformation groundwork has even been done in Transport –, though, so it will land eventually.
In the meantime, you can achieve exactly what you described with a small code snippet using the the_seo_framework_title_from_generation filter. It lets you modify the auto-generated title per post, so for your “Service Areas” post type, you could prepend “Homes for Sale in ” to whatever the post title is.
If you or a developer on your team would like the snippet, let me know, and I will follow up with it. All I need is the post type name of “Service Areas” (that’s a label, not a name).
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] AI Search FeaturesHi Greg,
I see you also opened an issue on GitHub about this. Let’s continue there: https://github.com/sybrew/the-seo-framework/issues/755.
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Sitemap Robots.txt BugHello!
Thank you for reporting this issue! I can confirm that this is a bug (regression), and it will be fixed in version 5.1.5 (or 5.2).
In this commit, when I overhauled the robots.txt output for TSF v5.1, I made an error in extracting the WordPress Core sitemap URL. We grabbed the sitemap URL from WordPress, but cleaned it up incorrectly, so it was silently discarded every time. This issue has been fixed for the next release.
5.1.5 (or 5.2) will be shipped close to WP 7.0’s release.
Hello!
Transport transforms and migrates metadata; it doesn’t copy it. So, after transporting, the old data is replaced — in other words, yes, the original Rank Math metadata is lost. Transport also cleans up much of the junk that Rank Math leaves behind, so your database will be much cleaner after the import.
TSF stores its post metadata in the same
_genesis_*fields that Genesis uses — it was originally an extension of the Genesis Framework. This means that if you deactivate TSF after importing, Genesis will still read the imported post metadata (title, description, canonical URL, robots).That said, I recommend against relying on Genesis for SEO. SEO is out of scope for a theme — it should do theme stuff. We actually use the Genesis Framework for our own website, and TSF was born from it (originally, it just filled in Genesis’s description fields, hence the plugin slug “autodescription”). When TSF is active, it disables Genesis’s SEO output and puts a robustly refined SEO powerhouse in its place. Since Genesis inspired our design philosophy, you’ll feel right at home — but with structured data, social meta, advanced robots, sitemaps, advanced query protection, and much more at your disposal.
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Tags not saving on publishHi Moxie!
Is this about your personal website linked to your profile?
I took a look at it, and it shows that most of the SEO settings have been emptied or unchecked, which shouldn’t happen under normal circumstances. Only a few settings, such as the robots.txt AI and SEO blocks, are still intact, which puzzles me greatly.
It looks like something overwrote the settings—most likely during the WP 6.9.4 update or by another change that affected the database around that time. The SEO Framework cannot cause this.
Some technical detail, if you’re curious: All TSF settings are stored together in a single entry in the database. If that entry were truly corrupted, the plugin would fail to read it at all and fall back to its defaults — but your site isn’t using defaults either. Instead, the settings are valid but mostly emptied, which means something overwrote them with an almost-blank state. A plugin, a database tool, or a migration script that read the settings and wrote them back incorrectly could’ve done this.
Regarding the tags: With most settings emptied, The SEO Framework won’t output its usual meta tags on the front end other than the forced canonical URL. That’s the direct cause of what you’re seeing — the settings that control the output have been turned off, so the tags aren’t being rendered.
Regarding the sitemap: I also noticed your sitemap returns a 404. With TSF’s optimized sitemap turned off (since almost all settings were emptied), WordPress should still serve its own built-in sitemap — but that’s returning a 404 too. This issue indicates that another plugin on your site is disabling WordPress’s core sitemaps, which further points to a plugin as the source of these issues.
What I’d recommend:
- Reset TSF’s settings: Go to SEO > Settings, scroll to the bottom, and use the settings reset option. This will restore all defaults and should immediately fix the missing output and the sitemap. You can then reconfigure to your liking.
- Think back to what changed: If you installed or updated a plugin, ran a database optimization tool, or performed a migration around the same time as the WP update, that’s the most likely culprit. Whatever it was, it read TSF’s settings and wrote them back nearly blank.
- If you have a backup from before the upgrade, that would also be worth restoring — whatever overwrote the SEO settings may have touched other data too.
After the reset, your tags should reappear, and the sitemap should work again.
Could you also list the plugins you have installed? You can grab a quick list at Tools > Site Health > Info > Active Plugins. That would help me narrow down what might have caused this.
Let me know how it goes! 🙂
- This reply was modified 1 month, 2 weeks ago by Sybre Waaijer. Reason: still no markdown support on these forums... 2004 called
Forum: Plugins
In reply to: [The SEO Framework – Fast, Automated, Effortless.] Ways to increase speed?Hi @adam426,
Please open a new topic, I’d love to help you there!