Blog Tools is BeeClear’s modular WordPress plugin that puts blog content and visibility in order. Open Graph, meanwhile, is the meta-tag protocol that social platforms use to build a link preview. The plugin’s Open Graph module solves the problem of duplicate tags — two versions of the title or image in the same page’s header. Before it adds anything of its own, it reads the whole header and checks what’s already there. That way no property ever appears twice, no matter who wrote it. See where duplicates come from and how to choose a coexistence mode with your SEO plugin.
Table of contents
- What are Open Graph tags, and why control them?
- Where do duplicate Open Graph tags on a WordPress site come from?
- How does Blog Tools detect tags already present in the header?
- Which coexistence mode with an SEO plugin should you choose?
- Why does overwriting the title also remove twitter:title?
- Do you need to rewrite titles and descriptions from Rank Math or Yoast?
- How do you check which tags a given post emits?
- How do you turn on the Open Graph module in Blog Tools?
What are Open Graph tags, and why control them?
Open Graph tags are markers in a page’s head section that describe the link preview on social platforms and messengers. Facebook, LinkedIn, X, Slack, WhatsApp, Discord and Teams all pull the title, description and card image from them. They decide how a link to your post looks when pasted into a chat or a post. A well-described link invites a click, while a bare address with no illustration is easy to scroll past.
The tags have to land in the page’s code server-side. A social platform’s crawler doesn’t run JavaScript, so a tag added by a script simply doesn’t exist for it. Blog Tools assembles the tags in PHP and prints them in the header. Controlling them means controlling the first impression your content makes off the blog.
Where do duplicate Open Graph tags on a WordPress site come from?
Duplicate Open Graph tags happen because several parts of a site print them independently of one another. An SEO plugin does it, so does Jetpack, so does the theme, and sometimes an add-on nobody remembers anymore. Each one writes its own og:title or og:image without checking what’s already in the header. The result: the same page ends up with two titles, two images and contradictory descriptions.
Two plugins writing og:title isn’t two opinions — it’s a broken preview. The crawler takes the first or the last tag, depending on its implementation. No dashboard will tell you which version won. You only find out when someone shares the link and gets a foreign title or no image at all.
How does Blog Tools detect tags already present in the header?
Blog Tools detects tags already present in the header by reading the entire wp_head section before adding its own. That’s the place where plugins and the theme print their meta. The module opens a buffer right at the start of that section and closes it at the very end, so it sees everything in between. It then knows every og:, twitter:, article:, profile: and fb: tag, no matter who wrote it.
This approach doesn’t need a list of supported plugins. What matters is what actually landed in the page’s code, not what a dashboard claims. A property that’s already described will never be printed a second time in any mode. If something else takes over the buffer mid-way, the module emits nothing and reports it in diagnostics. Silent duplication would, after all, be worse than no tags at all.
Which coexistence mode with an SEO plugin should you choose?
You choose a coexistence mode with your SEO plugin depending on who you want deciding the link preview. Blog Tools offers three variants, and in each one it makes sure no property appears twice. Here’s how they differ:
| Mode | What happens to tags from elsewhere | When it works well |
|---|---|---|
| fill the gaps (default) | they stay, and the module only adds properties that aren’t described yet | when your SEO plugin describes the title and description but is missing an image, article dates or an X card |
| our values win | they disappear for every property the module has a value for | when you want to take over sharing without hunting for settings in other plugins |
| only our tags | they disappear in the namespaces the module emits anything in | when the header should speak in Blog Tools’ voice only |
The third variant comes with an important caveat. On views the module doesn’t describe, it removes nothing — this covers search results, the 404 page and a post you’ve excluded. An empty header is worse than tags from elsewhere. Taking over doesn’t mean deleting.
Why does overwriting the title also remove twitter:title?
Overwriting the title also removes a foreign twitter:title, because X reads its own version of that tag first. Without that, a page would say one thing on Facebook and another on X. You’d never see that mismatch in any dashboard. So Blog Tools treats three pairs as a single unit: title, description and image, in both versions.
The same rule covers property families. The og:image:width tag attaches itself to the last og:image printed before it. Overwriting the image without removing someone else’s width would leave your file described with foreign dimensions. So the module takes og:image together with the whole og:image:* family.
By default, the module also doesn’t duplicate the same content under two names. From the twitter: namespace it only prints twitter:card, twitter:site and twitter:creator — tags with no Open Graph equivalent. X falls back to og:title, og:description and og:image when it doesn’t find a version meant for itself. A second copy would just be one more place to maintain. The full set stays available for services that want a different title or image on X.
Do you need to rewrite titles and descriptions from Rank Math or Yoast?
You don’t need to rewrite titles and descriptions from Rank Math, Yoast or SEOPress, because Blog Tools reads them as fallback values. When the module’s field is empty, whatever your editorial team already entered in the SEO plugin flows into it. The module only ever reads those fields and never writes to them. A value containing that other plugin’s variables, for example %title%, gets skipped. A card with a raw token would look worse than one with a default value.
The module picks the image to share in a fixed order. It first checks the field on the post, then the featured image, the image from the SEO plugin, and the first usable image in the content. Next come image rules, the fallback image for posts and for the whole site, and finally the site icon. SVG and ICO files are skipped, since no platform shows them on a link card.
How do you check which tags a given post emits?
You can check the tags a given post emits in three places, without ever opening the source code. Each one shows the same result, just from a different angle:
- the Open Graph box in the editor shows a table of the post’s tags after you save,
- the preview tab in the dashboard assembles the tags for the homepage or any post and flags what will render wrong,
- the
?bc_og_debug=1parameter on the front end, with diagnostics turned on, tells a logged-in admin what was in the header, what got replaced and what came out.
In the post’s box you can also override the title, description, image, og:type and card type. There’s also a switch that turns off all the module’s tags for that post, leaving anyone else’s untouched. Keep in mind that Facebook Sharing Debugger and LinkedIn Post Inspector cache the fetched card for several days. After a change, force a re-fetch of the page instead of judging by an old share.
How do you turn on the Open Graph module in Blog Tools?
You turn on the Open Graph module in Blog Tools separately, since it’s disabled by default right after the plugin is installed. Once activated, it starts in fill-the-gaps mode, so it doesn’t take anything away from your SEO plugin. Start by setting a site fallback image, which rescues subpages without a featured image, plus archives. Then review the tags on a few posts and decide whether you want to take over more. You can change the mode at any time, without touching content and without rewriting fields in your SEO plugin.
The other modules, from table of contents to redirects, are covered on the Blog Tools page. You turn on each one independently, just like Open Graph. If you’d like help fitting the settings to your site, contact us and we’ll help you choose the right coexistence mode for your SEO plugin.
