Skip to content

How to Add Article Schema to WordPress Posts (JSON-LD, No Plugin Required)

By Jasper Frumau WordPress

You check your blog post in Google’s Rich Results Test and see WebPage in the structured data output. Not Article. Not BlogPosting. Just a generic page type that tells search engines and AI systems nothing about who wrote it, when it was published, or that it is editorial content at all.

This is the default behavior of most WordPress SEO plugins, including The SEO Framework and Yoast SEO. They output WebPage schema for posts. For pages, that makes sense. For articles with a named author, a publication date, and original analysis, it leaves structured data on the table.

Quick Summary: WordPress SEO plugins default to WebPage schema on posts. Article schema gives search engines and AI systems richer signals — author, publish date, headline, publisher. You can add it yourself with a JSON-LD block in under two minutes per post, no plugin required.

Why Article Schema Matters

Schema.org defines Article as a subtype of CreativeWork. It carries fields that WebPage does not:

  • author — a Person or Organization, with a name and optional URL
  • datePublished and dateModified — ISO 8601 timestamps
  • headline — the article title (distinct from the page title)
  • publisher — the organization behind the content

These fields are not cosmetic. Google uses Article schema to populate rich results, news carousels, and author knowledge panels. AI systems like ChatGPT, Perplexity, and Google’s AI Overviews use structured author and publisher data as trust signals when deciding which sources to cite. A post with Article schema and a named author is more likely to be attributed correctly than one that only declares itself a generic WebPage.

The Plugin Gap: Why Your SEO Plugin Outputs WebPage

The SEO Framework (TSF) version 5.x outputs WebPage as the schema type for posts and pages. There is no admin setting in the free plugin to change it to Article per post type. The relevant code is in inc/classes/meta/schema/entities/webpage.class.php:

public static $type = 'WebPage';

TSF does offer Article schema — but only through its premium Articles extension, which automatically adds Article, NewsArticle, and BlogPosting markup to posts. It is a paid add-on. The SEO Framework keeps the core plugin free forever and runs a “make money first, pay us later” model: its Pro tier starts at $7/month (billed yearly) and unlocks premium extensions like Articles on up to two sites. If you would rather not add a subscription, the manual JSON-LD block below does the same job for free.

Yoast SEO does output Article schema for posts by default, but only on its Premium tier or when the post type is explicitly configured. The free version may or may not include it depending on the version and configuration.

Rank Math outputs Article schema for posts out of the box. If you are using Rank Math, you likely already have this covered — check with the Rich Results Test to confirm.

For everyone else, the fix is simple: add a JSON-LD script block directly to the post content.

How to Add Article Schema With a Custom HTML Block

Open your post in the WordPress block editor. Scroll to the bottom. Add a Custom HTML block (wp:html in code view) and paste the following, replacing the placeholder values:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Post Title Here",
  "datePublished": "2026-01-15",
  "dateModified": "2026-01-20",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://yoursite.com/about/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Your Site Name",
    "url": "https://yoursite.com/"
  }
}
</script>

That is it. Save the post and test it with Google’s Rich Results Test or Schema.org’s validator. You should see Article appear alongside the existing WebPage output from your SEO plugin.

Field Reference

FieldRequiredValue
headlineYesThe post title. Keep under 110 characters.
datePublishedYesISO 8601 date: YYYY-MM-DD
dateModifiedNoISO 8601 date. Omit if same as published.
author.nameYesThe author’s display name.
author.urlNoLink to the author’s about/bio page.
publisher.nameYesYour site or organization name.
publisher.urlNoYour site’s homepage URL.
imageNoURL to the featured image. Recommended for rich results.
descriptionNoA 1-2 sentence summary of the article.

Adding Article Schema to Multiple Posts With WP-CLI

If you have 10 or 50 or 200 posts that need Article schema, adding it through the editor one by one is not practical. WP-CLI lets you script it.

The approach: fetch each post’s content, append the JSON-LD block, and update the post. Here is a bash script that does it for a single post:

#!/bin/bash
ID=42
HEADLINE="Your Post Title"
DATE="2026-01-15"
AUTHOR="Author Name"

SCHEMA_BLOCK="<!-- wp:html -->
<script type=\"application/ld+json\">
{
  \"@context\": \"https://schema.org\",
  \"@type\": \"Article\",
  \"headline\": \"${HEADLINE}\",
  \"datePublished\": \"${DATE}\",
  \"author\": {
    \"@type\": \"Person\",
    \"name\": \"${AUTHOR}\"
  },
  \"publisher\": {
    \"@type\": \"Organization\",
    \"name\": \"Your Site Name\"
  }
}
</script>
<!-- /wp:html -->"

CONTENT=$(wp post get "$ID" --field=post_content)
echo "${CONTENT}

${SCHEMA_BLOCK}" > /tmp/post_${ID}.txt

wp post update "$ID" \
  --post_content="$(cat /tmp/post_${ID}.txt)"

rm /tmp/post_${ID}.txt

Wrap this in a loop with your post data and you can update an entire site in a single script run. The key is to fetch the existing content first, append the schema block, and write it back — never overwrite the content.

Note: If you are on a Trellis/Bedrock setup, remember to add --path=web/wp to all WP-CLI commands. The WordPress installation lives in a subdirectory, not the web root.

Will Article Schema Conflict With Your SEO Plugin?

No. JSON-LD blocks are additive. Your SEO plugin outputs its own <script type="application/ld+json"> in the page head with WebPage, BreadcrumbList, and Organization schema. The Article block you add to the post body is a separate graph node. Search engines and AI systems read both.

Google’s documentation explicitly supports multiple JSON-LD blocks on a single page. The Rich Results Test will validate both without errors. There is no duplication issue because WebPage and Article are different types describing the same resource from different angles.

The AI SEO Angle: Why This Matters Now

AI-powered search engines are reshaping how content gets discovered. ChatGPT, Perplexity, Google AI Overviews, and Claude all synthesize answers from web sources. When they cite a source, they pull from structured data to build the attribution: the author name, the publication, the date. We covered the broader picture of how AI assistants decide which sites to recommend in a separate guide.

A post with Article schema gives these systems exactly what they need:

  • Attribution confidence — a named author with a linked bio page signals real expertise, not anonymous content
  • Freshness signaldatePublished and dateModified let AI systems prioritize recent analysis over stale content
  • Publisher trust — the Organization entity builds a connection between the content and the site’s broader authority

This is one piece of a broader strategy. Pair it with an llms.txt file, strong author bios, and FAQ sections and you have a content surface that AI systems can parse, verify, and cite with confidence. If you would rather hand the whole structured-data layer to someone else, our WordPress SEO service covers schema, crawlability, and Core Web Vitals end to end.

How to Verify Your Schema

After adding the JSON-LD block, run your post URL through these validators:

  • Google Rich Results Test — confirms the schema is valid and shows which rich result types are eligible
  • Schema.org Validator — checks the full JSON-LD structure against the Schema.org specification
  • View page source — search for application/ld+json in the HTML to confirm both the plugin schema (in the <head>) and your custom block (in the <body>) are rendering

You should see the Article type alongside WebPage and BreadcrumbList. If the Article block does not appear, check that the Custom HTML block was saved correctly — sometimes the block editor strips <script> tags if you switch between visual and code mode.

Frequently Asked Questions

  • Does The SEO Framework support Article schema? Not in the free plugin — it outputs WebPage for posts and pages, with no setting to change the type. TSF does offer Article schema through its premium Articles extension (paid plans from $7/month), which adds it automatically. If you would rather not pay, add Article schema manually as a JSON-LD block in the post content.
  • Will adding Article schema cause duplicate structured data errors? No. WebPage and Article are different schema types. Google supports multiple JSON-LD blocks per page and validates them independently.
  • Should I use Article or BlogPosting? BlogPosting is a subtype of Article. Both work for rich results. Use Article for editorial content, analysis, and journalism. Use BlogPosting for informal or diary-style content. When in doubt, Article is the safer choice.
  • Can I automate this with a plugin instead? Yes. Schema Pro, WP Schema Pro, and similar plugins can output Article schema per post type. But if you already have an SEO plugin handling most of your structured data, adding a JSON-LD block is simpler than introducing another plugin dependency.
  • Do I need to add Article schema to pages too? Generally no. Article schema is for editorial content — blog posts, news articles, analysis. Static pages like About, Contact, and Services are correctly described by WebPage.

Quick Checklist

  • Check your current schema output with the Rich Results Test
  • If posts show WebPage only, add a Custom HTML block with Article JSON-LD
  • Include at minimum: headline, datePublished, author (name), publisher (name)
  • For bulk updates, use WP-CLI to script it
  • Validate after adding — both Google’s tool and Schema.org’s validator
  • Pair with llms.txt and author bio pages for maximum AI search visibility

Need WordPress SEO Support for Your Business?

We handle WordPress SEO for SMEs — from technical foundations (schema, crawlability, Core Web Vitals) to on-page optimization and content strategy. Fixed-price audits and ongoing support available.

  • Technical SEO audit and implementation
  • Schema markup and structured data
  • Core Web Vitals and page speed optimization
  • On-page SEO and content strategy

Leave a Reply

Your email address will not be published.