FAQ Accordion
The FAQs CPT rendered the only way this fleet ever renders it: server-side, on a host page, in native details and summary — zero JavaScript, keyboard accessible. The CPT’s own URLs stay invisible on purpose: no archive, noindex singles and topic pages. These six demo entries answer the setup questions themselves — replace them before launch.
Topic
General
Native details/summary, one open at a time via the shared name attribute, ordered by menu order. Fully expanded in the raw HTML — a crawler or an LLM gets every question and answer without running a line of JavaScript.
[DEMO] How do I configure Rank Math for an FAQ CPT?
Demo answer — replace before launch. Three settings, all under Rank Math.
Titles & Meta → FAQs: set singles to noindex. Individual answers are thin content and compete with the page the accordion lives on.
Titles & Meta → FAQ Topics: noindex the topic archives for the same reason.
Sitemap Settings → FAQs: off. Never trust the toggle — it reads ON for post types Rank Math never saved. Toggle OFF → Save → reload → confirm → ON → Save, and curl the sitemap to prove it.
[DEMO] Should the FAQ CPT have an archive? Why not?
Demo answer — replace before launch. No. has_archive should be false.
FAQs are a content source, not a destination. They get rendered into the service or product page they belong to, and that page is the authoritative, indexable asset — it has the answers plus context plus commercial intent.
A separate /faqs/ archive republishes the same Q&As with none of that context, so it competes with the very pages it was meant to support. That is the same reasoning that noindexes the individual FAQ URLs, just at aggregate level.
If a client genuinely needs a browsable help centre, build it as a Page for that site. Do not ship an archive to every clone.
Topic
Pricing & Payment
Same markup, different data: this section’s loop pins the pricing term by slug. Selecting terms by slug, never by ID, is what keeps a taxonomy migration cheap.
[DEMO] How should FAQs be grouped and ordered?
Demo answer — replace before launch. By topic taxonomy, ordered by menu_order.
The faqsByTopic loop takes a $topic argument, so one reusable loop serves every page instead of a copy per section. Order comes from the Page Attributes order box, which is why page-attributes is in the CPT supports.
Note the loop stores terms as a scalar string, not an array — the Loop Manager stringifies expressions it cannot represent, so write loops over REST rather than through the UI.
[DEMO] What do I check before calling the FAQ build done?
Demo answer — replace before launch. Six things, all of them curl-able.
/faqs/ returns 404 (no archive). A single FAQ URL resolves but carries noindex. The topic archive carries noindex. No faqs-sitemap.xml in the sitemap index. No FAQPage schema in the source. Zero loop errors on the page the accordion lives on.
Check the robots meta on a live site, not the template — the template is noindex site-wide while search-engine visibility is off, which masks per-CPT settings entirely.
Topic
Getting Started
The $topic loop parameter is documented as unreliable, so each topic section is a duplicated loop with a literal term — three lines of registry JSON per topic, no conditionals anywhere.
[DEMO] How do I avoid relying on WPCodeBox snippets?
Demo answer — replace before launch. Ask what owns the behaviour before writing PHP.
Post types and taxonomies: Etch Content Hub registers both natively. Schema: Rank Math Schema Templates with display conditions replaces per-CPT schema snippets. Ordering: the page-attributes support gives you menu_order for free.
Reserve snippets for genuine one-shots — a migration you fire once and delete. A register_* snippet is permanent: delete it and the thing it registered disappears along with its terms.
[DEMO] What actually helps with AI search?
Demo answer — replace before launch. Less than the marketing suggests, and none of it is a trick.
FAQPage schema no longer earns rich results — Google removed them on 7 May 2026. The markup is still valid and harmless, but it renders nothing, so it is not a reason to add a snippet.
What does help is unglamorous: question-shaped headings, answer text present in the HTML rather than injected by JavaScript, and the content sitting on a page that is indexable and has real context around it. That is the same list that helps human readers.