{"kind":"crawlcheck-platform-fix","v":1,"platform":"wordpress","platform_name":"WordPress","code":null,"groups":[{"group":"robots","title":"Edit robots.txt","codes":["ROBOTS_RULES_SHADOWED","ROBOTS_NO_SITEMAP","ROBOTS_NOT_200","ROBOTS_IS_HTML","ROBOTS_IS_CATCHALL","ROBOTS_DISALLOW_ALL","ROBOTS_CTYPE","ROBOTS_BLOCKED","RENDER_RESOURCE_BLOCKED","INSTRUCTION_CONFLICT","DECLARED_SITEMAP_REFUSED","DECLARED_SITEMAP_BROKEN","SITEMAP_BLOCKED","AI_OPTOUT_SET","BOT_BLOCKED_NOT_CITED","BOT_RULES_SHADOWED_NOT_CITED"],"steps":["WordPress serves a virtual robots.txt. Edit it in your SEO plugin: Yoast SEO → Tools → File editor; Rank Math → General Settings → Edit robots.txt; All in One SEO → Tools → Robots.txt Editor.","A real robots.txt file in the site root (the folder with wp-config.php) overrides every plugin. If one exists, edit that file instead, through your host's file manager or SFTP.","Keep one group per crawler: a crawler that has its own User-agent group ignores the * group entirely, so repeat any Disallow lines it still needs."],"page":"https://crawlcheck.io/fix/wordpress#robots"},{"group":"sitemap","title":"Publish a sitemap","codes":["NO_SITEMAP_FOUND","SITEMAP_NO_LASTMOD","SITEMAP_IS_HTML","SITEMAP_DECLARES_NOTHING","SITEMAP_UNREADABLE","SITEMAP_ORIGIN_ERROR","ROBOTS_NO_SITEMAP","DECLARED_SITEMAP_BROKEN","DECLARED_SITEMAP_REFUSED"],"steps":["WordPress 5.5 and later serve /wp-sitemap.xml; Yoast and Rank Math replace it with /sitemap_index.xml. Keep exactly one turned on.","Core's wp-sitemap.xml has no lastmod dates; Yoast and Rank Math sitemaps do. If the finding is missing lastmod, use the plugin sitemap.","Add the sitemap's address to robots.txt as Sitemap: https://yourdomain/sitemap_index.xml."],"page":"https://crawlcheck.io/fix/wordpress#sitemap"},{"group":"llms","title":"Publish llms.txt","codes":["NO_LLMS_TXT","NO_LLMS_TXT_NOT_CITED"],"steps":["Upload llms.txt to the site root, the folder with wp-config.php, through your host's file manager or SFTP.","Recent versions of Yoast SEO and Rank Math can generate llms.txt for you; use one source only."],"page":"https://crawlcheck.io/fix/wordpress#llms"},{"group":"hsts","title":"Send HSTS","codes":["HSTS_MISSING","HSTS_PRELOAD_INELIGIBLE","HSTS_PRELOAD_REMOVED"],"steps":["Set it at the web server or CDN, not in WordPress: Apache .htaccess Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"; Nginx add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","Add includeSubDomains only when every subdomain serves HTTPS, and preload only when you mean to stay on HTTPS for good."],"page":"https://crawlcheck.io/fix/wordpress#hsts"},{"group":"bots","title":"Let crawlers through","codes":["CHALLENGE_SERVED_200","CHALLENGE_PINNED_AT_EDGE","ANSWER_ENGINE_REFUSED","UNIFORM_REFUSAL","HOMEPAGE_REFUSED","HOMEPAGE_IS_INTERSTITIAL","ORIGIN_REFUSED_SCANNER","CRAWLER_SERVED_LESS","CRAWLER_REDIRECTED_AWAY","BOT_BLOCKED_NOT_CITED"],"steps":["Security plugins challenge unknown clients. Check each one you run: Wordfence (Firewall → Rate limiting, fake-crawler blocking), MalCare (its bot protection serves a challenge page with status 200), Sucuri firewall, and your host's own bot filter.","Allow the crawlers you want, or turn the challenge off for verified crawlers, then rescan to confirm each crawler gets the real page."],"page":"https://crawlcheck.io/fix/wordpress#bots"},{"group":"render","title":"Serve the text, not just code","codes":["PAGE_IS_MOSTLY_CODE","CONTENT_NEEDS_JAVASCRIPT"],"steps":["Page builders add most of the code: in Elementor turn on the optimized DOM output and improved asset loading features; remove plugins that inject scripts on every page.","Let a cache or optimization plugin defer JavaScript and remove unused CSS, then rescan to see the text share move."],"page":"https://crawlcheck.io/fix/wordpress#render"},{"group":"schema","title":"Fix the structured data","codes":["ENTITY_COLLISION","ENTITY_NO_COORDINATES","GEO_COUNTRY_MISMATCH","NAP_NAME_DRIFT","NAP_UNDECLARED_LISTING"],"steps":["Keep one source of business markup: Rank Math → Titles & Meta → Local SEO, or Yoast Local SEO. Turn off the same block in your theme or any second plugin.","Fill name, address, phone, geo coordinates and opening hours there, matching the Business Profile exactly."],"page":"https://crawlcheck.io/fix/wordpress#schema"},{"group":"cache","title":"Clear stale copies","codes":["STALE_CACHE_SERVED","MACHINE_FILE_CACHE_STALE","MACHINE_FILE_CACHE_SPLIT"],"steps":["Purge the server cache first (your host's Varnish or page cache), then the caching plugin, then the CDN; purging in the other order lets the CDN refill from the stale layer.","Give robots.txt, sitemaps and llms.txt a short cache lifetime."],"page":"https://crawlcheck.io/fix/wordpress#cache"}],"rules":"https://crawlcheck.io/rules","reading":"Where to make each fix on WordPress. The general fix for each finding is in its report and at /rules/<CODE>; these steps say where that change is made on this platform, and say so when the platform cannot do it."}