Write and check SEO meta without leaving the editor
Set up SEO meta WordPress content actually gets: a per-post panel where you write the SEO title, meta description, focus keyphrase, social overrides and JSON-LD schema fields directly — then check every one of them live, with no separate SEO plugin required.
- A dedicated field for every SEO, social and schema value per post.
- ~30 SEO checks plus a full readability analysis, live in the editor.
- Auto-detects Yoast, RankMath and others to avoid duplicate tags.
- 11 JSON-LD schema types, including FAQ, HowTo and Product.
SEO meta WordPress: what does the module actually let you create?
This is what SEO meta WordPress content gets with TheOneWP: TOWP_Seo_Meta adds an SEO panel to every enabled post type where you write and save a custom SEO title, meta description, focus keyphrase, canonical URL, robots settings, social title/description/image overrides, and JSON-LD schema fields — all stored as real post meta, editable from either the Block Editor sidebar or the Classic Editor meta box. The same panel's Analysis tab then runs roughly 30 SEO checks and a full readability analysis against whatever you just wrote, entirely in the browser. On the front end, every field you filled in gets output as the title, meta tags, full Open Graph and Twitter Card tags, and schema markup across 11 types — but only when the module does not detect Yoast, RankMath, AIOSEO, SEOPress or The SEO Framework already doing the same job.
On-page SEO usually means a separate plugin
Titles, meta descriptions, Open Graph tags and schema markup typically live in a dedicated SEO plugin with its own settings, its own database footprint, and its own update cycle.
Two SEO plugins active at once means duplicate tags
Running a general-purpose toolkit alongside a dedicated SEO plugin risks two sets of title, description and Open Graph tags fighting for the same slot in the page head.
Waiting for a save-and-reload to see an SEO score gets old fast
Checking keyphrase density or readability by publishing and reloading, instead of seeing it update live while writing, slows down every single edit.
Analysis while you write, output that knows when to stand down
The module checks content live in the editor and checks the environment before ever touching the page head.
A real field for every value
Title, description, keyphrase, social overrides and schema data are all things you write and save, not something guessed from the content.
Live analysis, no save required
Keyphrase, title, description and readability checks recalculate in the browser as the content changes.
Steps aside for an existing SEO plugin
Detecting Yoast, RankMath or three other major plugins disables TheOneWP's own frontend output automatically.
Full output when it is the one in charge
Title, meta tags, Open Graph, Twitter Cards and JSON-LD schema, all generated from the same panel that ran the analysis.
The complete SEO meta WordPress feature set
Every capability below is present in the meta box, the analysis script, or the frontend output methods.
A field for every SEO, social and schema value
SEO title, meta description, focus keyphrase and synonyms, canonical URL, robots toggles, social title/description/image, and schema-specific fields — each one a real, editable field, not a generated guess.
~30 SEO checks, ~10 readability categories
Keyphrase placement, density, distribution and synonyms; sentence length, passive voice, transition words, paragraph length and subheading distribution — all live.
Detects five major SEO plugins
Yoast, RankMath, AIOSEO, SEOPress and The SEO Framework are all checked for before SEO Meta outputs anything on the front end.
Template tokens and pixel-width check
{{title}}, {TheOneWP} and {{separator}} tokens build per-post-type default titles; length is checked in estimated pixels, not raw characters.
Real-time keyphrase collision detection
An AJAX query checks whether the keyphrase you just typed is already the focus keyphrase on another post, before you publish.
11 JSON-LD types
Article, BlogPosting, NewsArticle, FAQPage, HowTo, Product, WebPage, AboutPage, ContactPage, CollectionPage and BreadcrumbList, auto-selected or manually chosen.
Full Open Graph and Twitter Card output
Independent social title, description and image, falling back to the SEO title, meta description and featured image when left blank.
Set up SEO meta WordPress content in four steps
Set the keyphrase first — most of the analysis is checked against it.
Set the focus keyphrase
A 2-4 word phrase the Analysis tab checks placement and density against throughout the content.
Write the SEO title and meta description
Use the Google preview and the pixel-width counter to keep the title from being truncated in search results.
Work through the Analysis tab
Address the SEO and readability checks flagged red or yellow before moving on.
Set social fields and schema type
Fill in social overrides only where they should differ from the SEO title and description, and pick a schema type if Auto is not right.
Where live analysis changes how you write
The module fits any content workflow where SEO is part of writing, not an afterthought.
Content teams publishing regularly
Writers get immediate feedback on keyphrase usage and readability without waiting on a separate SEO review pass.
FAQ and HowTo content
Dedicated schema fields turn a Q&A list or a numbered process directly into FAQPage or HowTo structured data.
Agencies replacing a separate SEO plugin
Consolidate title, meta, social and schema management into the same toolkit already running the rest of the site.
SEO tooling that knows its boundaries
Every design choice in the verified code favors coexistence and immediate feedback over a heavier, isolated tool.
Analysis runs in the browser, not the server
The verified implementation keeps the expensive part of SEO analysis off the server entirely.
Client-side scoring
Keyphrase density, readability and every other check are JavaScript calculations against the editor content — no analysis request sent per keystroke.
Frontend output only when needed
should_output_frontend_meta() gates the title filter and head injection together — skip conditions are checked once, not per tag.
Scoped to enabled post types only
Meta box, REST registration and frontend output all check the post type against the configured list before doing any work.
Capability-checked on every read and write
Post meta this sensitive to how a page appears publicly is guarded the same way core post data is.
edit_post capability on every meta field
The REST auth callback checks edit_post for an existing post, or edit_posts for a new one, before any SEO meta value can be read or written.
Nonce-verified AJAX
The keyphrase-usage duplicate check verifies a dedicated nonce before running its query.
Escaped output on every tag
Every meta tag, canonical link and JSON-LD value goes through esc_attr(), esc_url() or wp_json_encode() with unescaped-slashes/unicode flags at the point it is printed.
Permission-checked duplicate lookups
The keyphrase-usage query still requires edit_post on the post being edited when a post ID is supplied, even though the check itself only reads metadata.
Aware of the SEO plugins most sites already run
The supplied code checks for specific, named plugins rather than assuming it is the only SEO tool present. No compatibility claim beyond the verified implementation is assumed.
Yoast, RankMath, AIOSEO, SEOPress, The SEO Framework
Checked via defined constants and class existence — WPSEO_VERSION, RANK_MATH_VERSION, AIOSEO_VERSION, SEOPRESS_VERSION, THE_SEO_FRAMEWORK_VERSION and matching classes.
Block Editor & Classic Editor
show_in_rest registration on every field means the Block Editor sidebar and Classic Editor meta box both read and write the same data.
AI Meta Description & AI SEO Fixer
When active, these add "Generate with AI" and "Fix with AI" actions directly inside this module's own meta box.
TheOneWP versus common alternatives
Compare a real SEO meta WordPress implementation with typical dedicated SEO plugins.
| Capability | TheOneWP SEO Meta | Other common solutions |
|---|---|---|
| Analysis speed | Client-side, recalculated live as you type | Varies; some tools debounce or require a save |
| Coexistence | Auto-detects 5 major SEO plugins and stands down | Running two SEO plugins usually means duplicate tags |
| Readability language support | English and Italian passive-voice patterns | Often English-only |
| Title length check | Estimated pixel width | Frequently a flat character count |
| Duplicate keyphrase detection | Live AJAX check against other posts | Rarely offered as a live check |
| Schema coverage | 11 types with dedicated fields for FAQ/HowTo/Product | Varies by plugin and pricing tier |
Use the analysis without chasing green for its own sake
The checks are a guide, not a target to game.
Pick the keyphrase before writing the title
Setting it first means every subsequent check — title, description, density — is measured against the right target from the start.
Check the duplicate-keyphrase warning before publishing
Two posts competing for the same keyphrase usually needs a decision, not a green checkmark on both.
Use Auto schema unless a specific type is clearly right
Manual schema types are for content that genuinely is a FAQ, a HowTo or a Product page — not a default to change on every post.
Fill in social overrides only when they should differ
Leaving them blank means the SEO title, meta description and featured image get reused automatically.
Avoid assumptions the code does not support
The module has a defined, verified scope — a few assumptions outside it cause confusion.
Running it alongside Yoast and expecting both to output
By design, SEO Meta detects Yoast and stops outputting its own tags — use the force-output filter only if that is a deliberate, understood choice.
Expecting the analysis to run on the server
The SEO and readability scores are computed in the browser from the current editor content — there is no server-side re-analysis to fall back on.
Assuming every post type gets the meta box automatically
Only the post types enabled in settings get the panel; anything else needs adding to the list first.
SEO Meta FAQ
These answers come directly from the verified class, its analysis script and the meta box view.
Does SEO Meta conflict with Yoast or RankMath if I already use one?
No — it checks for them. has_external_seo_plugin() detects Yoast, RankMath, AIOSEO, SEOPress and The SEO Framework, and by default SEO Meta stops outputting its own title, meta tags and schema when one is active, avoiding duplicate tags. A towp_seo_meta_force_output filter can override this if you deliberately want both.
Is the SEO and readability analysis calculated on the server?
No. The checks run client-side in JavaScript as you type in the meta box — keyphrase density, passive voice, transition words and the rest are all computed in the browser, with no round trip needed for the analysis itself.
How does the passive voice check work for non-English content?
It uses two separate pattern sets: one for English auxiliary-plus-participle constructions, and one for Italian passive forms (essere/venire conjugations plus past participles) — so the check is not English-only.
How is the SEO title length checked — characters or pixels?
Pixels. estimatePixelWidth() approximates how the title will actually render in a search result, which is closer to how Google truncates titles than a flat character-count limit.
Can I tell if a focus keyphrase is already used on another post?
Yes. Typing a keyphrase triggers an AJAX check against every other post of the enabled post types for a matching stored keyphrase, so duplicate targeting across the site is caught while you are still writing.
What schema types does it support?
Eleven: Auto (Article or WebPage, detected automatically), Article, BlogPosting, NewsArticle, FAQPage, HowTo, Product, WebPage, AboutPage, ContactPage, CollectionPage and BreadcrumbList — with dedicated fields for FAQ items, HowTo steps, and Product price, currency and availability.
Does it work with the block editor, or only the Classic Editor?
Both. Every field is registered with show_in_rest and a capability-based auth callback, so the Block Editor sidebar can read and write them through wp.data the same way Classic Editor meta boxes do.
What happens to WordPress's own canonical tag?
It is explicitly removed. inject_head() calls remove_action('wp_head', 'rel_canonical') and always prints its own canonical tag — the post permalink by default, or your override — so there is never a duplicate canonical tag in the page.
Stop guessing your SEO score.Watch it update as you write.
Use SEO meta WordPress content can be checked against live: title, description, schema and readability, without leaving the editor.

