Schema markup is code that tells search engines and AI assistants what a page contains, such as a business’s contact details or an FAQ. When an SEO provider pastes that code into the WordPress content editor instead of adding it through a plugin or theme file, WordPress may remove it when the page is saved, and the page never carries it. A workaround exists, but it depends on every person who edits the page following the same steps every time.
In this post:
- WordPress filters script code out of post content for many user roles, so pasted schema can disappear when the page is saved.
- Schema that is well written has no effect if it is not present in the page code.
- A common workaround depends on every editor following the same steps on every page, indefinitely.
- Two checks show whether delivered schema is present in the page code.
A vendor can report schema markup as delivered for months without any of it appearing on the website. The gap is easy to miss because the only way to see it is to inspect the page code.
What the Provider Delivered
An SEO provider gave a client a batch of schema markup, the structured data behind search features such as review ratings and FAQ dropdowns. The provider pasted the snippets directly into the WordPress content editor, the same field used to write a blog post, rather than adding them through a plugin, a theme file, or another location designed to hold code.
Why WordPress Removes Pasted Schema
WordPress filters script code out of post content for any account that lacks a permission called unfiltered_html. On a standard single-site installation, Administrators and Editors have this permission and Authors and Contributors do not. On a multisite network, only Super Admins have it. When an account without the permission saves a page, script tags are removed and no warning is shown. A provider’s report can state that schema was added while the page source contains none.
An account with the permission can still lose the code. The content field is designed for text, and the editor’s formatting cleanup can alter or remove pasted code depending on which editor view is open when the page is saved. This is the basis of the workaround described below.
In either case, search results show no change, because the code was removed before a search engine could read it. The schema may have been written correctly, but it has no effect if it is not in the page.
Why the Text Tab Workaround Fails
Some SEO tutorials suggest a workaround.
- In the Classic Editor, switch to the Text tab instead of the Visual tab, because the Text tab does not apply the cleanup that removes scripts.
- Paste the code at the bottom of the content and save, without switching back to the Visual tab first.
- If the page is opened in the Visual tab at any point before a save, the code is removed.
This method has no safeguard. It relies on each person who edits the page remembering the same rule every time, with nothing on the page to warn them. If one editor forgets once, the code is lost with no notice. If the site is handed to a new employee or a different agency, nothing on the page documents the risk. If the same script is needed on hundreds of pages, each page carries the same risk, and any change to the script has to be made separately on every one of them.
A method that fails the first time anyone makes a mistake is effectively on a countdown. Schema belongs in a plugin or (better yet) a theme file, where it is stored once and applies across the site without depending on which editor tab is open.
How to Check Whether Your Schema Is Really There
If a report lists schema as delivered, two checks show whether it exists in the page.
- Open the page in a browser, right-click, and select View Page Source. Search the source for “ld+json”. Most schema is written in this format, so a match means structured data is present in the code.
- Enter the page address in Google’s Rich Results Test or the Schema Markup Validator to confirm the schema can be read and has no errors.
If neither check finds schema, it was reported but never delivered.
In most cases of this kind, nobody intended harm. The code was placed in a location that could not hold it, and the client paid for work that never reached the site.
