Forum Replies Created

Viewing 15 replies - 1 through 15 (of 5,366 total)
  • Plugin Author Sybre Waaijer

    (@cybr)

    Hi Harald,

    LinkedIn likely rejects your Open Graph image for two reasons:

    1. Missing dimensions: The og:image:width and og:image:height tags 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=1 in the Post Inspector.

    Plugin Author Sybre Waaijer

    (@cybr)

    I’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_page post 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.

    Plugin Author Sybre Waaijer

    (@cybr)

    Hello!

    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.

    Plugin Author Sybre Waaijer

    (@cybr)

    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_metadata hook, 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_meta flag 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 the get_post_metadata override 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.

    Plugin Author Sybre Waaijer

    (@cybr)

    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/2853879

    Google 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.

    Plugin Author Sybre Waaijer

    (@cybr)

    Hi 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
    Plugin Author Sybre Waaijer

    (@cybr)

    Hello!

    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.

    Plugin Author Sybre Waaijer

    (@cybr)

    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_actions table, 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_math tables freely, but keep the actionscheduler tables unless you are certain no other plugin depends on them.

    Plugin Author Sybre Waaijer

    (@cybr)

    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).

    Plugin Author Sybre Waaijer

    (@cybr)

    Hi 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.

    Plugin Author Sybre Waaijer

    (@cybr)

    Hello!

    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.

    Plugin Author Sybre Waaijer

    (@cybr)

    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.

    Plugin Author Sybre Waaijer

    (@cybr)

    Hi 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:

    1. 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.
    2. 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.
    3. 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
    Plugin Author Sybre Waaijer

    (@cybr)

    Hi @adam426,

    Please open a new topic, I’d love to help you there!

Viewing 15 replies - 1 through 15 (of 5,366 total)