Add FAQ Schema to WordPress Without a Plugin: Current Limits
Add truthful FAQPage JSON-LD only where it serves a real consumer, account for WordPress permissions, and avoid obsolete Google rich-result promises.
You can describe a visible FAQ with FAQPage JSON-LD, but do not do it expecting Google’s former expandable FAQ result. Google retired FAQ rich results in May 2026, as recorded in its documentation updates.
The schema.org vocabulary still exists. Use it when an actual consumer or content workflow needs it; a clear visible question-and-answer section is useful even without markup.
Start with the visible content
This fictional workshop page answers two customer questions:
| Visible question | Visible answer |
|---|---|
| How long does the workshop last? | The workshop lasts two hours. |
| Do I need to bring a laptop? | Yes. Bring a laptop with a current browser. |
The structured data should describe those same answers. Do not place extra promises, invented reviews or hidden sales copy only in the JSON-LD.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does the workshop last?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The workshop lasts two hours."
}
},
{
"@type": "Question",
"name": "Do I need to bring a laptop?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Bring a laptop with a current browser."
}
}
]
}
</script>
Add it through an authorized editing path
A Custom HTML block can be suitable when your WordPress role and site configuration permit the script element. WordPress’s Custom HTML documentation explains that users without the required unfiltered HTML capability can have disallowed markup stripped on save. Do not assume every editor or hosting configuration preserves JSON-LD.
- Check whether a theme or plugin already emits FAQPage for this page.
- Add your actual visible questions and answers.
- If permitted, add the JSON-LD through a Custom HTML block or a maintained theme integration.
- Save, then inspect the public HTML while logged out.
- Confirm there is one consistent representation and that the answers match.
If saving removes the script, use an appropriate supported integration with the site administrator. Do not weaken unrelated security permissions merely to retain a block.
Validate the relevant layer
Check JSON syntax and vocabulary with the Schema Markup Validator. It does not certify Google FAQ-result eligibility; that feature is retired. A script that remains in the editor but disappears from the published response has not completed the implementation.
The schema generator can prepare a starting block. Review the actual output, escape special characters correctly, and update it whenever the visible answers change.
For broader type selection, read the schema markup hub. For malformed JSON or mismatched content, use the validation guide. The example above is illustrative; it is not a measured WordPress deployment or a rich-result test.