Description
MarkExcell Meta Tags and Structured Data is a lightweight plugin for WordPress sites that need precise control over their on-page SEO metadata without installing a full SEO suite.
Every feature is controlled from a pair of meta boxes that appear directly on the page or post edit screen, keeping everything in context.
What it does:
- Adds a custom title tag per page or post, with a fallback to the WordPress default (post title + site name).
- Adds a custom meta description, falling back to the post excerpt, then the site-wide tagline.
- Outputs Open Graph tags (
og:title,og:description,og:image,og:url,og:type,og:site_name) with per-page overrides. - Outputs Twitter Card (
summary_large_image) tags using the same data. - Provides a freeform JSON-LD structured data field for any page or post, with JSON validation on save and a clear error message if the JSON is malformed.
- Auto-generates a
BlogPostingschema for posts when no manual JSON-LD is provided, referencing your site’s#personand#websiteentities.
What it does NOT do:
- No settings pages, no dashboard widgets, no telemetry.
- No sitemap generation.
- No keyword analysis or content scoring.
- No redirection management.
Important: Do not run this plugin alongside a full SEO plugin (Yoast SEO, Rank Math, All in One SEO, etc.) — you will get duplicate title tags and meta tags in your <head>.
For developers:
Three filters let you customise the site-wide defaults without editing the plugin:
me_seo_default_description— override the fallback meta description.me_seo_default_og_image— set a site-wide default OG image URL.me_seo_post_types— add additional post types to show the meta boxes on (defaults topageandpost).
Example:
add_filter( 'me_seo_default_description', function() {
return 'Your custom site-wide description here.';
} );
add_filter( 'me_seo_default_og_image', function() {
return 'https://example.com/wp-content/uploads/default-share.png';
} );
// Add meta boxes to a custom post type called 'project'
add_filter( 'me_seo_post_types', function( $types ) {
$types[] = 'project';
return $types;
} );
Usage
SEO: Title, Description & Open Graph meta box
Title tag
Enter the exact string you want to appear in the browser tab and search results. Leave blank and WordPress will use its default format: Post Title – Site Name.
Recommended length: 60 characters or fewer.
Meta description
The sentence or two that appears beneath your page title in search results. Leave blank to fall back to the post excerpt; if there is no excerpt, the site-wide default description is used.
Recommended length: 120–160 characters.
Open Graph overrides
These three fields let you set different text and image for social sharing without changing the SEO fields above — useful when the ideal tweet wording differs from the ideal title tag.
og:title— leave blank to inherit the title tag value.og:description— leave blank to inherit the meta description.og:image URL— paste the full URL of a 1200×630 px image. Leave blank to use the post’s featured image; if there is no featured image, the site-wide default OG image is used (set via theme_seo_default_og_imagefilter).
Structured Data (JSON-LD) meta box
Paste a raw JSON-LD object into this field. The plugin will:
- Validate that the JSON is well-formed.
- Check that a top-level
@contextor@graphkey is present. - Re-encode and store the canonical form on save.
- Output it as a
<script type="application/ld+json">block in<head>on the front end.
If the JSON fails validation, an error message is shown at the top of the meta box and the previous valid value is kept — your live schema is never broken by a typo.
Do not include the surrounding <script> tags — paste the JSON object only.
For posts where this field is left empty, the plugin automatically generates a BlogPosting schema using the post title, description, published/modified dates, featured image, and author/publisher references pointing to your site’s #person and #website entities.
Fallback chain summary
Field
Primary
Secondary
Tertiary
Title tag
SEO title field
WordPress default (title + site name)
—
Meta description
Description field
Post excerpt
Site tagline / filter default
og:title
OG title field
SEO title field
WordPress default title
og:description
OG description field
Meta description (resolved above)
—
og:image
OG image URL field
Featured image
me_seo_default_og_image filter
Installation
- Upload the
markexcell-meta-tags-structured-datafolder to/wp-content/plugins/. - Activate the plugin from Plugins Installed Plugins in your WordPress admin.
- Open any page or post for editing — two new meta boxes will appear:
- SEO: Title, Description & Open Graph (near the top of the edit screen)
- Structured Data (JSON-LD) (below the main editor)
- Fill in whichever fields you need, or leave them empty to use the automatic fallbacks.
- Publish or update the post/page as normal.
There is no settings page to configure.
FAQ
-
Will this conflict with Yoast SEO / Rank Math / All in One SEO?
-
Yes — running any two SEO plugins that output title tags and Open Graph meta simultaneously will produce duplicate tags. Deactivate your existing SEO plugin before using this plugin, or vice versa.
-
The JSON-LD field says “Last save rejected” — what do I do?
-
The JSON you pasted is either malformed or is missing a top-level
@contextor@graphkey. Copy your JSON into a validator such as validator.schema.org or jsonlint.com to find the error, correct it, and save again. Your previously saved schema remains live until a valid replacement is submitted. -
How do I set a site-wide default OG image?
-
Use the
me_seo_default_og_imagefilter in your theme’sfunctions.phpor a small mu-plugin:add_filter( 'me_seo_default_og_image', function() { return 'https://example.com/path/to/default-share-image.png'; } ); -
The auto-generated BlogPosting schema references `#person` and `#website` — where do I define those?
-
You define them on your homepage (or a suitable page) using the Structured Data (JSON-LD) meta box. Paste a JSON-LD
@graphthat includes yourPersonandWebSiteentities with the matching@idvalues. The plugin references them by ID; it does not duplicate the full entity on every post. -
Can I add the meta boxes to custom post types?
-
Yes, using the
me_seo_post_typesfilter:add_filter( 'me_seo_post_types', function( $types ) { $types[] = 'your_custom_post_type'; return $types; } ); -
Does the plugin need `add_theme_support( ‘title-tag’ )` to work?
-
Yes. The title tag override relies on WordPress managing the
<title>element. Most modern themes already declare this support. If your theme hard-codes a<title>element inheader.php, the custom title field will have no effect until that is removed.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“MarkExcell Meta Tags and Structured Data” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “MarkExcell Meta Tags and Structured Data” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release.