AI crawler policy on WordPress
WordPress core generates a virtual robots.txt when no physical file exists, and its 'Discourage search engines from indexing this site' setting behaves differently depending on WordPress version — a meta tag today, a robots.txt change in versions before 5.3.
Published 8/4/2026 · Platform documentation verified 8/4/2026
What CrawlPact can verify
CrawlPact fetches your site’s actual public robots.txt (physical or WordPress’s own generated
virtual one), meta robots tags in the rendered page <head>, and relevant response headers — the
same content any real crawler receives, regardless of which mechanism produced it.
What CrawlPact cannot verify
CrawlPact cannot see your WordPress admin settings directly (whether “Discourage search engines”
is checked, which plugins are active, or your theme’s own header modifications) — only the
resulting public output. It also cannot determine which specific plugin or theme caused a given
directive to appear if multiple are capable of modifying robots.txt/meta tags on your site.
Where crawler policy may originate on WordPress
- A physical
robots.txtfile uploaded to the site root — if one exists, it takes precedence over WordPress’s own generated version entirely. - WordPress core’s virtual
robots.txt— generated dynamically by thedo_robots()function when no physical file exists; by default this disallows/wp-admin/while explicitly allowing/wp-admin/admin-ajax.php, then applies therobots_txtfilter (which any theme or plugin can hook into to add further rules). - The “Discourage search engines from indexing this site” setting (Settings → Reading) —
since WordPress 5.3, checking this generates a page-level
<meta name="robots" content="noindex,nofollow" />tag. In versions before 5.2, the same setting instead changed the virtualrobots.txtoutput toUser-agent: * / Disallow: /— but only when WordPress is installed in the site root and no physicalrobots.txtfile already exists. - SEO plugins (e.g. those managing sitemaps/meta tags) — a common source of additional meta robots or header directives, distinct from WordPress core’s own behaviour.
- A hosting platform or CDN in front of WordPress, which can add its own headers or modify the response independently of WordPress itself — see the Cloudflare guide if applicable.
Public signals relevant to WordPress
robots.txt (physical file, or core’s virtual one), the page-level meta robots tag WordPress’s
“Discourage search engines” setting can add, and any additional directives a theme, plugin, or
hosting layer introduces.
Common conflicts or failure modes
- A physical
robots.txtfile silently overriding the virtual one. If a site owner (or an old plugin, or a migration) left a staticrobots.txtfile in the site root, WordPress’s own dynamic generation — including anything therobots_txtfilter would otherwise add — never runs at all. - Confusing “Discourage search engines” with actually blocking crawlers. Per WordPress’s own
documentation, this setting’s effect (a
noindexmeta tag on current versions) does not block access at a technical level, and most search engines honour it voluntarily rather than being forced to — content already indexed before the setting was enabled is not automatically removed. - Multiple plugins independently modifying
robots.txtor meta directives, producing conflicting or duplicated rules that aren’t obvious from checking any single plugin’s own settings screen in isolation. - A staging or migrated site inheriting “Discourage search engines” as checked, silently suppressing indexing (via the noindex meta tag) after going live, if the setting wasn’t explicitly reviewed as part of the launch process.
How to inspect the current public response
Request https://yourdomain.com/robots.txt directly, and view the page source of a live page to
check for a noindex meta tag in <head> — both are simple, direct checks that reflect the same
final output any crawler receives, regardless of which WordPress mechanism produced them.
How to implement or update policy safely
- To set explicit rules beyond WordPress’s default virtual output: create a physical
robots.txtfile in the site root (this fully replaces the virtual one — therobots_txtfilter no longer applies once a physical file exists). - To hook into the default output instead of fully replacing it: use the
robots_txtfilter (a developer-level change, typically via a plugin or theme’sfunctions.php) so WordPress’s own baseline rules (like disallowing/wp-admin/while allowing AJAX) are preserved. - Always confirm “Discourage search engines from indexing this site” (Settings → Reading) is
unchecked before launching a production site, if broad indexability is intended — this is a
frequent, easy-to-miss cause of an entire site being marked
noindex.
How to verify after deployment
Re-check both /robots.txt and a live page’s meta tags after any plugin, theme, or hosting change
— and specifically after any site migration or launch, given how common the “Discourage search
engines” setting is as a source of an unintended sitewide noindex.
Monitoring and change detection
A saved CrawlPact domain is automatically rechecked on your plan’s schedule (Solo: monthly, Pro/Agency: weekly) — this will catch a plugin update, theme change, or an accidentally-toggled “Discourage search engines” setting without requiring a manual recheck.
Platform-specific limitations
- CrawlPact cannot identify which specific WordPress plugin or theme is responsible for a given directive — only that the directive is present in the public output.
- CrawlPact cannot read the WordPress admin “Discourage search engines” checkbox state directly;
it can only observe the resulting meta tag or
robots.txtoutput. - Behaviour of the “Discourage search engines” setting differs by WordPress core version (noindex
meta vs.
robots.txtchange) — CrawlPact reports the actual output your site currently produces, not which mechanism produced it.
Related tools and crawler pages
See robots.txt vs. meta robots vs. X-Robots-Tag for how these three signal layers relate, and the crawler directory for documented AI crawler tokens.
Frequently asked questions
Does checking “Discourage search engines” block AI training crawlers specifically? On current
WordPress versions it adds a sitewide noindex meta tag — a broad signal, not one that
distinguishes search from AI-training crawlers. For that distinction, see
Block only AI training crawlers.
Does CrawlPact edit my WordPress site? No — CrawlPact audits the public robots.txt and meta
signals your site already produces; changing WordPress settings, themes, or plugins happens in
your own WordPress admin.
Official references
Every technical claim on this page traces to one of these sources.
Related platform guides
AI crawler policy on Cloudflare
How Cloudflare's managed robots.txt and AI Crawl Control interact with your site's public AI crawler policy — verified against official Cloudflare documentation.
AI crawler policy on Shopify
How Shopify's robots.txt.liquid customization mechanism works, its default rules, and its documented limits — verified against official Shopify documentation.
Related guides
robots.txt syntax basics for AI crawler tokens
How User-agent groups, Allow, Disallow, and Sitemap directives are evaluated, and where AI crawler tokens fit in.
robots.txt vs. meta robots tag vs. X-Robots-Tag: which mechanism to use
Three different mechanisms can restrict crawler access, at different scopes and for different content types. A decision guide for choosing between them.