{"id":315698,"date":"2026-05-28T18:02:13","date_gmt":"2026-05-28T18:02:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/4wp-faq\/"},"modified":"2026-09-20T14:58:38","modified_gmt":"2026-09-20T14:58:38","slug":"4wp-faq","status":"publish","type":"plugin","link":"https:\/\/kal.wordpress.org\/plugins\/4wp-faq\/","author":17741300,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.6.1","stable_tag":"2.6.1","tested":"7.1.1","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"4WP FAQ","header_author":"4WP Team","header_description":"Not just another FAQ block. A smart wrapper that adds intelligence without breaking your design. Adds JSON-LD schema, aggregation, and usage context while working on top of existing content with zero duplication.","assets_banners_color":"1f1f2a","last_updated":"2026-09-20 14:58:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/4wpdev\/4wp-faq","header_author_uri":"https:\/\/4wp.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":746,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"4wpdev","date":"2026-05-28 18:01:01","revision":3552603},"2.0.0":{"tag":"2.0.0","author":"4wpdev","date":"2026-08-19 07:27:21","revision":3654049},"2.0.1":{"tag":"2.0.1","author":"4wpdev","date":"2026-08-20 07:09:33","revision":3656078},"2.1.0":{"tag":"2.1.0","author":"4wpdev","date":"2026-09-01 06:59:17","revision":3675478},"2.2.0":{"tag":"2.2.0","author":"4wpdev","date":"2026-09-02 21:02:16","revision":3678669},"2.3.0":{"tag":"2.3.0","author":"4wpdev","date":"2026-09-07 18:07:30","revision":3685376},"2.4.0":{"tag":"2.4.0","author":"4wpdev","date":"2026-09-11 10:27:10","revision":3691206},"2.5.0":{"tag":"2.5.0","author":"4wpdev","date":"2026-09-16 14:21:59","revision":3698772},"2.5.1":{"tag":"2.5.1","author":"4wpdev","date":"2026-09-16 14:26:42","revision":3698781},"2.6.0":{"tag":"2.6.0","author":"4wpdev","date":"2026-09-18 15:45:04","revision":3702259},"2.6.1":{"tag":"2.6.1","author":"4wpdev","date":"2026-09-20 14:58:38","revision":3704355}},"upgrade_notice":{"2.6.1":"<p>Registers the FAQ block with 4WP Drive so imported documents can map an FAQ heading to forwp\/faq. https:\/\/wordpress.org\/plugins\/4wp-drive\/<\/p>","2.6.0":"<p>Edit or Add FAQ in the registry: Update pushes onto Used In pages; Add FAQ with categories or one page inserts a new accordion item. Unplaced rows are dropped on scan. Site pages stay the source of truth.<\/p>","2.5.0":"<p>Optional AI category copy via WordPress Connectors. FAQ \u2192 Settings \u2192 AI is always visible; enable markup after Connectors are ready, then Generate with AI on a category.<\/p>","2.4.0":"<p>Category nav collapses nested terms by default. Pretty category URLs fill core Title \/ Query Title \/ Term Name and Excerpt \/ Term Description, use a category canonical and SEO image (hub image if empty), and skip the duplicate list H2 when the page title already shows the category.<\/p>","2.3.0":"<p>Requires WordPress 6.6+. Dashboard, drag-and-drop category order, category title rules, Transform to 4WP FAQ for selected Details\/Accordion items, and filled SEO titles no longer append the site name.<\/p>","2.2.0":"<p>Hub blocks visible on the plugin directory, Count block, preview\/SEO URL settings, and Anatoliy Dovgun as contributor. Re-upload screenshots to SVN assets if captions still show empty images.<\/p>","2.1.0":"<p>Adds registry FAQ List, Card, and Categories blocks for FSE hubs.<\/p>","2.0.3":"<p>Fixes FAQPage schema for Details blocks and moves JSON-LD to the document head.<\/p>","2.0.1":"<p>Hotfix for incomplete updates: safe load when plugin files are missing. Re-upload the full 2.0.1 package if you saw a fatal error on 2.0.0.<\/p>","2.0.0":"<p>Registry categories, Polylang-aware scan, and improved FAQ block insertion (default Accordion + Add FAQ item).<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3566302,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3566302,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3566302,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3566302,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"forwp\/faq-count":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"forwp\/faq-count","title":"4WP FAQ Count","category":"widgets","icon":"editor-ol","description":"Live count of FAQ questions on this page: all, the current category URL, or the current search.","keywords":["faq","count","4wp"],"textdomain":"4wp-faq","supports":{"html":false,"className":true,"interactivity":true},"example":{"attributes":{}},"editorScript":"file:..\/..\/build\/faq-count.js"},"forwp\/faq-categories":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"forwp\/faq-categories","title":"4WP FAQ Categories","category":"widgets","icon":"category","description":"FAQ category navigation: vertical or horizontal. Filters 4WP FAQ List via the Interactivity API.","keywords":["faq","categories","navigation","4wp"],"textdomain":"4wp-faq","supports":{"html":false,"align":["wide","full"],"className":true,"interactivity":true},"attributes":{"orientation":{"type":"string","default":"vertical"},"label":{"type":"string","default":"Categories"},"showAll":{"type":"boolean","default":true},"allLabel":{"type":"string","default":"All categories"},"showCount":{"type":"boolean","default":true},"collapseChildren":{"type":"boolean","default":true},"seoUrls":{"type":"boolean","default":false},"includeTermIds":{"type":"array","default":[],"items":{"type":"number"}},"excludeTermIds":{"type":"array","default":[],"items":{"type":"number"}}},"example":{"attributes":{"orientation":"vertical","label":"Categories","showAll":true,"allLabel":"All categories","showCount":true,"collapseChildren":true,"seoUrls":false,"includeTermIds":[],"excludeTermIds":[]}},"editorScript":"file:..\/..\/build\/faq-categories.js","style":"file:..\/..\/build\/style-faq-categories.css","editorStyle":"file:..\/..\/build\/style-faq-categories.css"},"forwp\/faq-list":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"forwp\/faq-list","title":"4WP FAQ List","category":"widgets","icon":"list-view","description":"Registry FAQ list: grouped by category or a single list, with include\/exclude.","keywords":["faq","query","glossary","4wp"],"textdomain":"4wp-faq","supports":{"html":false,"align":["wide","full"],"className":true,"interactivity":true},"attributes":{"layout":{"type":"string","default":"grouped"},"includeTermIds":{"type":"array","default":[],"items":{"type":"number"}},"excludeTermIds":{"type":"array","default":[],"items":{"type":"number"}},"cardDisplayMode":{"type":"string","default":"accordion"},"cardShowSources":{"type":"boolean","default":false},"cardSourcesLabel":{"type":"string","default":"Used in"},"cardShowPostType":{"type":"boolean","default":false},"cardQuestionStyle":{"type":"object","default":{}},"cardAnswerStyle":{"type":"object","default":{}}},"example":{"attributes":{"layout":"grouped","includeTermIds":[],"excludeTermIds":[],"cardDisplayMode":"accordion","cardShowSources":false,"cardSourcesLabel":"Used in","cardShowPostType":false,"cardQuestionStyle":{},"cardAnswerStyle":{}},"innerBlocks":[{"name":"forwp\/faq-card","attributes":{"displayMode":"accordion","showSources":false,"sourcesLabel":"Used in","showPostType":false,"questionStyle":{},"answerStyle":{}}}]},"editorScript":"file:..\/..\/build\/faq-list.js","style":"file:..\/..\/build\/style-faq-list.css","editorStyle":"file:..\/..\/build\/style-faq-list.css"},"forwp\/faq":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"forwp\/faq","title":"4WP FAQ","category":"widgets","icon":"editor-help","description":"FAQ wrapper for accordion items.","textdomain":"4wp-faq","supports":{"html":false,"className":true},"attributes":{"jsonLd":{"type":"string","default":""},"categoryMode":{"type":"string","default":"none"},"categoryTermIds":{"type":"array","default":[],"items":{"type":"number"}},"categoryTermId":{"type":"number","default":0},"categoryName":{"type":"string","default":""}},"example":{"attributes":{"jsonLd":"","categoryMode":"none","categoryTermIds":[],"categoryTermId":0,"categoryName":""},"innerBlocks":[{"name":"core\/accordion","innerBlocks":[{"name":"core\/accordion-item","innerBlocks":[{"name":"core\/accordion-heading","attributes":{"content":"Question"}},{"name":"core\/accordion-panel","innerBlocks":[{"name":"core\/paragraph","attributes":{"content":"Answer"}}]}]}]}]},"editorScript":"file:.\/build\/index.js"},"forwp\/faq-card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"forwp\/faq-card","title":"4WP FAQ Card","category":"widgets","icon":"editor-help","description":"Single FAQ registry card: accordion or heading plus description, optional source links.","keywords":["faq","accordion","card","4wp"],"textdomain":"4wp-faq","parent":["forwp\/faq-list"],"usesContext":["postId","postType"],"supports":{"html":false,"className":true,"inserter":false,"interactivity":true},"attributes":{"displayMode":{"type":"string","default":"accordion"},"showSources":{"type":"boolean","default":false},"sourcesLabel":{"type":"string","default":"Used in"},"showPostType":{"type":"boolean","default":false},"questionStyle":{"type":"object","default":{}},"answerStyle":{"type":"object","default":{}}},"example":{"attributes":{"displayMode":"accordion","showSources":false,"sourcesLabel":"Used in","showPostType":false,"questionStyle":{},"answerStyle":{}}},"editorScript":"file:..\/..\/build\/faq-card.js","style":"file:..\/..\/build\/style-faq-card.css","editorStyle":"file:..\/..\/build\/style-faq-card.css"}},"tagged_versions":["1.0.0","2.0.0","2.0.1","2.1.0","2.2.0","2.3.0","2.4.0","2.5.0","2.5.1","2.6.0","2.6.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"4WP FAQ block wrapping core Accordion in the editor","2":"Settings \u2014 rescan, JSON-LD, preview count, pretty category URLs, and how category titles are built","3":"FAQ hub \u2014 List + Categories (and Count) in the Site Editor"}},"plugin_section":[262246],"plugin_tags":[1741,1643,148076,2516,186],"plugin_category":[43,55],"plugin_contributors":[262731,262732],"plugin_business_model":[],"class_list":["post-315698","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-accordion","plugin_tags-faq","plugin_tags-gutenberg","plugin_tags-json-ld","plugin_tags-seo","plugin_category-customization","plugin_category-seo-and-marketing","plugin_contributors-4wpdev","plugin_contributors-anatolikkk","plugin_committers-4wpdev","plugin_committers-anatolikkk","plugin_support_reps-anatolikkk"],"banners":{"banner":"https:\/\/ps.w.org\/4wp-faq\/assets\/banner-772x250.png?rev=3566302","banner_2x":"https:\/\/ps.w.org\/4wp-faq\/assets\/banner-1544x500.png?rev=3566302","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/4wp-faq\/assets\/icon-128x128.png?rev=3566302","icon_2x":"https:\/\/ps.w.org\/4wp-faq\/assets\/icon-256x256.png?rev=3566302","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>4WP FAQ wraps WordPress core <strong>Accordion<\/strong> blocks so you can keep your design and still get:<\/p>\n\n<ul>\n<li><strong>FAQPage JSON-LD<\/strong> for Google rich results (off by default; turn on when you are ready)<\/li>\n<li>An optional <strong>FAQ registry<\/strong> (scan of unique questions). Edit one record to push Q\/A onto every <strong>Used In<\/strong> page. <strong>Add FAQ<\/strong> places a new item on category pages or one page. Site content stays the source of truth.<\/li>\n<li><strong>Hub pages<\/strong> with List + Categories blocks, pretty category URLs, category SEO titles, collapsible subcategory nav, and drag-and-drop category order (admin + front end)<\/li>\n<li><strong>Drag-and-drop FAQ category order<\/strong> on <strong>FAQ \u2192 Categories<\/strong> \u2014 same order in admin lists and on the front end (List \/ Categories hub)<\/li>\n<li>Optional <strong>AI category copy<\/strong> through the standard <strong>WordPress AI Client<\/strong> (Settings \u2192 Connectors) \u2014 description, display title, SEO title, and SEO description. No custom vendor SDK.<\/li>\n<\/ul>\n\n<p>A plugin by <a href=\"https:\/\/4wp.dev\/\">4wp.dev<\/a>. <strong>4WP<\/strong> is our project brand; this plugin is not affiliated with, endorsed, or sponsored by WordPress.<\/p>\n\n<p>Source: <a href=\"https:\/\/github.com\/4wpdev\/4wp-faq\">github.com\/4wpdev\/4wp-faq<\/a><\/p>\n\n<h4>How to work with it (short path)<\/h4>\n\n<ol>\n<li>In the editor, add a core <strong>Accordion<\/strong> (or select an existing one).<\/li>\n<li>Click <strong>Convert to FAQ<\/strong> in the block toolbar (or insert the <strong>4WP FAQ<\/strong> block). You can also select existing <strong>Details<\/strong>, <strong>Accordion<\/strong>, or heading + paragraph blocks and use <strong>Transform to \u2192 4WP FAQ<\/strong>.<\/li>\n<li>Put the <strong>question<\/strong> in the Accordion Item heading and the <strong>answer<\/strong> in the panel.<\/li>\n<li>Open <strong>FAQ \u2192 Settings<\/strong> and enable <strong>FAQPage JSON-LD<\/strong> if you want structured data on the front end.<\/li>\n<li>Optional: complete registry setup \u2192 <strong>Rescan<\/strong> (Dashboard or Settings) \u2192 place <strong>4WP FAQ List<\/strong> and <strong>4WP FAQ Categories<\/strong> on a hub page or template.<\/li>\n<li>Optional: <strong>FAQ \u2192 Add FAQ<\/strong> \u2014 question, answer, FAQ categories (every matching FAQ block) and\/or one page. No place chosen: the row is registry-only until a scan drops it.<\/li>\n<li>Optional: edit a registry FAQ and <strong>Update<\/strong> \u2014 the plugin writes that item onto every <strong>Used In<\/strong> page (question match uses the previous title if you renamed it).<\/li>\n<li>Optional: configure <strong>Settings \u2192 Connectors<\/strong>, then <strong>FAQ \u2192 Settings \u2192 AI<\/strong> to allow field markup. On <strong>FAQ \u2192 Categories<\/strong>, edit a term and <strong>Generate with AI<\/strong>. Apply writes into the form; <strong>Update<\/strong> still saves.<\/li>\n<\/ol>\n\n<p>The registry is a helper. Accordion items on pages are the source of truth. A scan rebuilds the CPT from the site. New answers reuse the markup wrapper of a sibling accordion item on that page.<\/p>\n\n<h4>Blocks<\/h4>\n\n<ul>\n<li><strong>4WP FAQ<\/strong> (<code>forwp\/faq<\/code>) \u2014 wrap Accordion \/ Accordion Item for JSON-LD and registry scan<\/li>\n<li><strong>4WP FAQ List<\/strong> (<code>forwp\/faq-list<\/code>) \u2014 registry glossary: grouped or flat, include\/exclude categories<\/li>\n<li><strong>4WP FAQ Categories<\/strong> (<code>forwp\/faq-categories<\/code>) \u2014 category nav that filters the List; nested terms collapse by default<\/li>\n<li><strong>4WP FAQ Count<\/strong> (<code>forwp\/faq-count<\/code>) \u2014 live count for All \/ category \/ search (<code>[forwp_faq_count]<\/code>)<\/li>\n<li><strong>4WP FAQ Card<\/strong> (<code>forwp\/faq-card<\/code>) \u2014 inner card for the List (not in the inserter)<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Wrap <strong>Accordion<\/strong> \/ <strong>Accordion Item<\/strong> (legacy <strong>Details<\/strong> still supported)<\/li>\n<li><strong>FAQPage JSON-LD<\/strong> in the document head \u2014 site-wide toggle plus per-block override<\/li>\n<li>Optional <strong>FAQ registry<\/strong> \u2014 scan, <strong>Used In<\/strong>, edit-to-push, <strong>Add FAQ<\/strong> onto category pages or one page<\/li>\n<li><strong>FAQ categories<\/strong> \u2014 manage in admin, assign per block, or create on scan from the page<\/li>\n<li><strong>Admin Dashboard<\/strong> \u2014 status metrics, Rescan, hierarchical categories, reused \/ uncategorized<\/li>\n<li><strong>FSE hub blocks<\/strong> \u2014 List, Categories, Count, Card<\/li>\n<li>Categories nav: nested terms collapse by default; visitors expand them and the browser remembers<\/li>\n<li>Preview count per category on the All view + optional pretty category URLs (<code>\/hub-page\/term-slug\/<\/code>)<\/li>\n<li>Category SEO title \/ description \/ image fields; filled SEO title is used as-is (no site-name suffix); pretty URLs use a category canonical<\/li>\n<li>Drag-and-drop category order on <strong>FAQ \u2192 FAQ Categories<\/strong> \u2014 same order in admin lists, Dashboard, and front-end List \/ Categories blocks<\/li>\n<li><strong>Polylang<\/strong> \u2014 categories follow the language of the page that owns the FAQ block<\/li>\n<li>Setup wizard for registry post type and taxonomy slugs<\/li>\n<li><strong>Convert to FAQ<\/strong> toolbar and <strong>Transform to \u2192 4WP FAQ<\/strong> (Accordion, Details, List, heading + paragraph \u2014 one or many); default Accordion template on insert<\/li>\n<li><strong>AI Assistant<\/strong> \u2014 WordPress AI Client \/ Connectors; Generate with AI on FAQ category edit (description + titles + meta). Settings \u2192 AI is always visible; markup stays off until a connector is available and <strong>Allow predefined field markup<\/strong> is on<\/li>\n<\/ul>\n\n<h4>AI Assistant<\/h4>\n\n<p>Generation uses the <strong>WordPress AI Client<\/strong>. Configure a text-generation connector under <strong>Settings \u2192 Connectors<\/strong>. <strong>FAQ \u2192 Settings<\/strong> always shows an <strong>AI<\/strong> card; <strong>Allow predefined field markup<\/strong> stays disabled until a connector is available.<\/p>\n\n<ol>\n<li>Complete registry setup so FAQ categories exist.<\/li>\n<li>Open <strong>Settings \u2192 Connectors<\/strong> and finish a connector for text generation.<\/li>\n<li>Under <strong>FAQ \u2192 Settings \u2192 AI<\/strong>, turn on <strong>Allow predefined field markup<\/strong>.<\/li>\n<li>Edit a category on <strong>FAQ \u2192 Categories<\/strong>. <strong>Generate with AI<\/strong> fills <strong>Description<\/strong>, <strong>Display title<\/strong>, <strong>SEO title<\/strong>, and <strong>SEO description<\/strong> from the category name and questions in that term.<\/li>\n<li>Review, <strong>Apply<\/strong> (or Apply all), then <strong>Update<\/strong>. Nothing is saved until you update the term.<\/li>\n<\/ol>\n\n<p>The plugin does not ship API keys and does not call a model until a connector is configured. Which remote service receives the prompt depends on the connector the administrator selected.<\/p>\n\n<h4>Development<\/h4>\n\n<p>JavaScript and CSS are built with <code>@wordpress\/scripts<\/code>. Human-readable source (<code>src\/<\/code>, <code>webpack.config.js<\/code>, <code>package.json<\/code>) is in the public GitHub repository \u2014 not in the distributed ZIP.<\/p>\n\n<p>From a clone:<\/p>\n\n<ol>\n<li><code>cd<\/code> into the plugin directory<\/li>\n<li><code>npm install<\/code><\/li>\n<li><code>npm run build<\/code> \u2014 compiles block, admin, and setup apps into <code>build\/<\/code><\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin optionally sends prompts through the <strong>WordPress AI Client<\/strong> when an administrator configures a connector under <strong>Settings \u2192 Connectors<\/strong> and runs <strong>Generate with AI<\/strong> on a FAQ category.<\/p>\n\n<p><strong>WordPress AI Client \/ Connectors<\/strong> (optional)<\/p>\n\n<p>The plugin sends a prompt (site name, category name, question titles in that category, and current field values) through <code>wp_ai_client_prompt()<\/code>. The WordPress AI Client routes that prompt to the connector the administrator selected. This plugin does not call model vendors directly; which remote service receives the prompt depends on that connector. No visitor or front-end user data is sent. Nothing is generated until a connector is configured and <strong>Allow predefined field markup<\/strong> is on.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload to <code>\/wp-content\/plugins\/4wp-faq\/<\/code> or install from <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate <strong>4WP FAQ<\/strong>.<\/li>\n<li>Add or convert Accordion blocks, then open <strong>FAQ \u2192 Settings<\/strong> for JSON-LD, registry, and optional AI options.<\/li>\n<li>After registry setup + Rescan, add <strong>4WP FAQ List<\/strong> and <strong>4WP FAQ Categories<\/strong> on a page or template.<\/li>\n<li>Optional: configure <strong>Settings \u2192 Connectors<\/strong>, then enable <strong>Allow predefined field markup<\/strong> under <strong>FAQ \u2192 Settings \u2192 AI<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20the%20accordion%20block%3F\"><h3>Does this replace the Accordion block?<\/h3><\/dt>\n<dd><p>No. 4WP FAQ is a thin wrapper. Your theme and block styles stay the same. Accordion stays Accordion\u20144WP FAQ adds schema, optional registry, and hub tools around it.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20new%20faq%20question%3F\"><h3>How do I add a new FAQ question?<\/h3><\/dt>\n<dd><ol>\n<li>Edit a page or post.<\/li>\n<li>Insert <strong>Accordion<\/strong> (or <strong>4WP FAQ<\/strong>, which starts with an Accordion).<\/li>\n<li>Click <strong>Convert to FAQ<\/strong> if you started from a plain Accordion.<\/li>\n<li>Or select one or more <strong>Details<\/strong> \/ <strong>Accordion Item<\/strong> blocks (or heading + paragraph pairs) and use <strong>Transform to \u2192 4WP FAQ<\/strong>.<\/li>\n<li>One Accordion Item = one question (heading) and one answer (panel).<\/li>\n<li>If you use the registry: open <strong>FAQ \u2192 Dashboard<\/strong> or <strong>Settings<\/strong> and run <strong>Rescan registry<\/strong> so the question appears under All FAQs.<\/li>\n<\/ol>\n\n<p>There is no manual \u201cAdd New\u201d registry editor. <strong>FAQ \u2192 Add FAQ<\/strong> is a short how-to only.<\/p><\/dd>\n<dt id=\"is%20json-ld%20%2F%20faq%20schema%20enabled%20by%20default%3F\"><h3>Is JSON-LD \/ FAQ schema enabled by default?<\/h3><\/dt>\n<dd><p>No. Structured data is opt-in so you control when Google sees FAQ markup.<\/p>\n\n<ul>\n<li>Site-wide: <strong>FAQ \u2192 Settings \u2192 FAQPage JSON-LD<\/strong><\/li>\n<li>Per block: block sidebar \u2192 JSON-LD on front end (On \/ Off \/ inherit)<\/li>\n<\/ul>\n\n<p>Schema is printed in the document <strong>head<\/strong> on singular pages that contain FAQ blocks. The registry is <strong>not<\/strong> required for JSON-LD.<\/p><\/dd>\n<dt id=\"how%20do%20i%20check%20that%20faq%20schema%20is%20working%3F\"><h3>How do I check that FAQ schema is working?<\/h3><\/dt>\n<dd><ol>\n<li>Enable JSON-LD in Settings (or for the specific block).<\/li>\n<li>View the published page.<\/li>\n<li>Use <a href=\"https:\/\/search.google.com\/test\/rich-results\">Google Rich Results Test<\/a> or view page source and search for <code>FAQPage<\/code>.<\/li>\n<\/ol>\n\n<p>If Yoast SEO is active and outputs FAQ schema for the same content, 4WP FAQ skips its own output to avoid duplicate FAQPage graphs.<\/p><\/dd>\n<dt id=\"what%20is%20the%20faq%20registry%3F\"><h3>What is the FAQ registry?<\/h3><\/dt>\n<dd><p>An optional post type that <strong>aggregates<\/strong> unique questions found in your content after a scan. Use it to:<\/p>\n\n<ul>\n<li>Browse all questions in one place<\/li>\n<li>See where a question is reused (\u201cUsed in\u201d)<\/li>\n<li>Build a public FAQ hub with List + Categories blocks<\/li>\n<\/ul>\n\n<p>In-place FAQ blocks on product or landing pages keep working either way.<\/p><\/dd>\n<dt id=\"how%20do%20i%20build%20an%20faq%20hub%20page%3F\"><h3>How do I build an FAQ hub page?<\/h3><\/dt>\n<dd><ol>\n<li>Complete registry setup and run <strong>Rescan<\/strong>.<\/li>\n<li>Create a page (for example <code>\/faq\/<\/code>).<\/li>\n<li>Add <strong>4WP FAQ Categories<\/strong> (nav) and <strong>4WP FAQ List<\/strong> (questions).<\/li>\n<li>Optionally add core <strong>Search<\/strong> and enable <strong>Filter 4WP FAQ List<\/strong> in that block\u2019s sidebar.<\/li>\n<li>Optionally add <strong>4WP FAQ Count<\/strong>.<\/li>\n<\/ol>\n\n<p>List and Categories share include\/exclude filters so the nav and list stay aligned.<\/p><\/dd>\n<dt id=\"what%20are%20pretty%20category%20urls%3F\"><h3>What are pretty category URLs?<\/h3><\/dt>\n<dd><p>When <strong>Pretty category URLs<\/strong> is on in Settings <strong>and<\/strong> on the Categories block:<\/p>\n\n<ul>\n<li>Category links become <code>\/your-hub-page\/term-slug\/<\/code><\/li>\n<li><strong>On-page title:<\/strong> category <strong>Display title<\/strong> (empty: category name) in core <strong>Title<\/strong> (<code>core\/post-title<\/code>), <strong>Query Title<\/strong> (<code>core\/query-title<\/code>), or <strong>Term Name<\/strong> (<code>core\/term-name<\/code>). The template chooses h1\u2013h6. Heading blocks are not swapped.<\/li>\n<li><strong>On-page description:<\/strong> category <strong>Description<\/strong> in core <strong>Excerpt<\/strong> (<code>core\/post-excerpt<\/code>) or <strong>Term Description<\/strong> (<code>core\/term-description<\/code>)<\/li>\n<li>Optional category <strong>SEO title<\/strong> \/ <strong>SEO description<\/strong> drive the document title and meta<\/li>\n<li><strong>Canonical<\/strong> \/ <code>og:url<\/code> is the category URL (<code>\/hub\/term-slug\/<\/code>), not the hub<\/li>\n<li><strong>SEO image<\/strong> on the category is used for Open Graph \/ Twitter; empty uses the hub page image<\/li>\n<li>The List does not repeat the category name as an H2 when the page title already shows it<\/li>\n<li>JSON-LD on that URL is limited to that category<\/li>\n<\/ul>\n\n<p>When off, category clicks filter the list <strong>in place<\/strong> and the page URL does not change.<\/p><\/dd>\n<dt id=\"how%20do%20category%20seo%20titles%20work%3F\"><h3>How do category SEO titles work?<\/h3><\/dt>\n<dd><p>On each FAQ category term you can set <strong>SEO title<\/strong> and <strong>SEO description<\/strong>.<\/p>\n\n<ul>\n<li>If <strong>SEO title<\/strong> is filled \u2192 the browser \/ document title uses that string <strong>exactly<\/strong> (no \u201c \u2013 site name\u201d appended).<\/li>\n<li>If it is empty \u2192 Display title + site name (WordPress default pattern).<\/li>\n<\/ul>\n\n<p>See <strong>FAQ \u2192 Settings \u2192 Documentation<\/strong> for on-page title \/ description and document title \/ meta rules.<\/p><\/dd>\n<dt id=\"when%20should%20i%20rescan%3F\"><h3>When should I Rescan?<\/h3><\/dt>\n<dd><p>After you add, edit, or remove FAQ blocks on published content. Rescan is available on:<\/p>\n\n<ul>\n<li><strong>FAQ \u2192 Dashboard<\/strong> (Status widget)<\/li>\n<li><strong>FAQ \u2192 Settings<\/strong> (Rescan registry)<\/li>\n<\/ul>\n\n<p>Scans also schedule automatically when relevant posts are saved.<\/p><\/dd>\n<dt id=\"why%20does%20wordpress.org%20show%20only%20one%20block%3F\"><h3>Why does wordpress.org show only one block?<\/h3><\/dt>\n<dd><p>Older packages registered List \/ Categories \/ Count from PHP only. From 2.2.0 each public block declares <code>editorScript<\/code> (and styles where applicable) in its <code>block.json<\/code> so the directory can discover them. Update to the latest ZIP if the listing looks incomplete.<\/p><\/dd>\n<dt id=\"how%20do%20i%20filter%20the%20faq%20list%20with%20search%3F\"><h3>How do I filter the FAQ list with Search?<\/h3><\/dt>\n<dd><p>Add a core <strong>Search<\/strong> block on the same page as <strong>4WP FAQ List<\/strong>. In the block sidebar: <strong>4WP FAQ \u2192 Filter 4WP FAQ List<\/strong>. Typing filters cards in place and does not run a site search.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20duplicate%20my%20faq%20text%3F\"><h3>Does the plugin duplicate my FAQ text?<\/h3><\/dt>\n<dd><p>No for the front end of in-place blocks\u2014the Accordion content you write is the source of truth. The registry stores aggregated copies for listing and stats; answers still come from scanned content, not a second public editor workflow.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20reset%20setup%3F\"><h3>What happens if I reset setup?<\/h3><\/dt>\n<dd><p>You can choose new registry slugs in the wizard again, but FAQ <strong>categories are removed<\/strong>. Existing registry posts remain on the previous post type until you complete setup and run a new scan.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20polylang%3F\"><h3>Does it work with Polylang?<\/h3><\/dt>\n<dd><p>Yes for registry categories during scan: terms follow the language of the page that contains the FAQ block. WPML is not integrated yet.<\/p><\/dd>\n<dt id=\"can%20editors%20use%20the%20dashboard%3F\"><h3>Can editors use the Dashboard?<\/h3><\/dt>\n<dd><p>Yes. <strong>FAQ \u2192 Dashboard<\/strong> is available to users who can edit posts. <strong>Rescan<\/strong> and <strong>Settings<\/strong> require manage options (administrators).<\/p><\/dd>\n<dt id=\"how%20does%20the%20ai%20assistant%20work%3F\"><h3>How does the AI Assistant work?<\/h3><\/dt>\n<dd><p>It uses the standard <strong>WordPress AI Client<\/strong>, not a separate 4WP AI plugin. Configure a text-generation connector under <strong>Settings \u2192 Connectors<\/strong>. The <strong>AI<\/strong> card is always visible under <strong>FAQ \u2192 Settings<\/strong>; you cannot enable <strong>Allow predefined field markup<\/strong> until a connector is ready. On a FAQ category edit screen, <strong>Generate with AI<\/strong> proposes Description, Display title, SEO title, and SEO description. Apply writes into the form; <strong>Update<\/strong> saves. Without a connector, Generate stays unavailable on category screens.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.6.1<\/h4>\n\n<ul>\n<li><strong>4WP Drive<\/strong> \u2014 register the FAQ wrap for import mapping: H2 FAQ section + H3 Q&amp;A become a <code>forwp\/faq<\/code> accordion. Drive Patterns \u2192 Integrations Plugins lists this plugin when it is active. See <a href=\"https:\/\/wordpress.org\/plugins\/4wp-drive\/\">4WP Drive<\/a>.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li><strong>Registry edit:<\/strong> Update a FAQ record (title + answer) to write that item onto every <strong>Used In<\/strong> page. Renamed questions are found via the previous title.<\/li>\n<li><strong>Add FAQ:<\/strong> create a registry post; FAQ categories append the item to every matching <code>forwp\/faq<\/code> block; <strong>One page<\/strong> limits that to a single post\/page that already has a FAQ block. Neither: registry-only until a scan drops it.<\/li>\n<li>New answers copy the sibling accordion-item wrapper (heading + panel markup) and fill in your text; the wrapped HTML is saved back on the registry record.<\/li>\n<li>Site content stays the source of truth. Rescan \/ reinstall rebuilds the registry from pages.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li><strong>AI Assistant:<\/strong> generate FAQ category Description, Display title, SEO title, and SEO description via the standard WordPress AI Client (Settings \u2192 Connectors).<\/li>\n<li>Settings \u2192 AI card is always visible; <strong>Allow predefined field markup<\/strong> stays disabled until Connectors support text generation.<\/li>\n<li>Docs: WordPress.org readme documents Connectors, FAQ, and External services.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li><strong>FAQ Categories:<\/strong> collapse nested terms by default (block inspector toggle). Visitors can expand\/collapse parents; the choice is remembered in the browser. The branch for the current category stays open.<\/li>\n<li>Pretty category URLs swap <strong>Display title<\/strong> into core Title \/ Query Title \/ Term Name, and <strong>Description<\/strong> into core Excerpt \/ Term Description. Heading level stays with the template.<\/li>\n<li>Pretty category URLs: <code>&lt;link rel=\"canonical\"&gt;<\/code> and <code>og:url<\/code> point at <code>\/hub\/term-slug\/<\/code> (not the hub). <strong>SEO image<\/strong> on the category is used for Open Graph \/ Twitter; empty falls back to the hub page image. List group H2 is omitted when the page title already shows that category.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Requires WordPress <strong>6.6+<\/strong> (Interactivity API for List \/ Categories hub).<\/li>\n<li>Convert selected <strong>Details<\/strong>, <strong>Accordion<\/strong> \/ <strong>Accordion Item<\/strong>, heading+paragraph pairs, or a <strong>List<\/strong> to <strong>4WP FAQ<\/strong> via Transform to and the Convert to FAQ toolbar (one or many items).<\/li>\n<li>Category SEO title: when filled, the document title is used as-is (no site-name suffix).<\/li>\n<li>Admin <strong>Dashboard<\/strong> under the FAQ menu: status metrics, Rescan, hierarchical By category (collapsible, inclusive counts), reused \/ uncategorized.<\/li>\n<li><strong>FAQ Categories<\/strong>: drag-and-drop term order applies in admin lists and on the front end (ensures <code>term_order<\/code> column when missing).<\/li>\n<li>Settings: compact layout plus how H1 \/ document title \/ meta description are built for category URLs.<\/li>\n<li>Docs: hub blocks for page building and core Search \u2192 Filter 4WP FAQ List.<\/li>\n<li>Add FAQ in admin is a short how-to (registry posts are created by scan, not by hand).<\/li>\n<li>List\/Card: Question \/ Answer typography on the Styles tab.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Listing: declare <code>editorScript<\/code> \/ <code>style<\/code> in block.json for List, Categories, Count, and Card so wordpress.org discovers hub blocks (not only the FAQ wrapper).<\/li>\n<li>Contributors: add <code>anatolikkk<\/code> (Anatoliy Dovgun) alongside <code>4wpdev<\/code>.<\/li>\n<li>Add <strong>4WP FAQ Count<\/strong> block and <code>[forwp_faq_count]<\/code> shortcode.<\/li>\n<li>Hub: per-category preview on All view, \u201cView all\u201d links, SEO\/pretty category URLs, category SEO title\/description, drag-and-drop term order.<\/li>\n<li>Card: optional \u201cUsed in\u201d source links from registry usage meta.<\/li>\n<li>Admin: preview-per-category and SEO URL settings; clearer JSON-LD help for hub pages.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Add FSE registry hub blocks: <strong>4WP FAQ List<\/strong>, <strong>4WP FAQ Card<\/strong>, <strong>4WP FAQ Categories<\/strong>.<\/li>\n<li>Shared include\/exclude filters between List and Categories (Interactivity API).<\/li>\n<li>Registry content helpers and front-end FAQ view script.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Fix: FAQPage JSON-LD uses <code>&lt;summary&gt;<\/code> text as <code>Question.name<\/code> for core Details blocks (no longer duplicates the answer).<\/li>\n<li>Fix: FAQPage JSON-LD outputs in <code>&lt;head&gt;<\/code> for reliable detection by validators and crawlers.<\/li>\n<li>Add: <code>@id<\/code> and <code>url<\/code> on FAQPage schema.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fix: incomplete plugin uploads no longer white-screen the site \u2014 missing PHP files show an admin error and the plugin stops loading safely.<\/li>\n<li>Deploy: ensure <code>includes\/class-category-resolver.php<\/code> and other required files are present when updating from 2.0.0.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Registry categories: none, existing, or create new per FAQ block (applied on scan).<\/li>\n<li>Categories can be managed in admin or derived from the pages where FAQ blocks are placed.<\/li>\n<li>Polylang: language-aware FAQ categories during registry scan.<\/li>\n<li>Block editor: default Accordion with one item on insert; <strong>Add FAQ item<\/strong> button.<\/li>\n<li>WPML support planned for a future release.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: <code>forwp\/faq<\/code> wrapper, setup wizard, registry scan, JSON-LD, admin settings UI.<\/li>\n<\/ul>","raw_excerpt":"FAQPage schema for core Accordion, optional registry you can edit or add from, hub pages, and AI via Connectors.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315698"}],"author":[{"embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/4wpdev"}],"wp:attachment":[{"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315698"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315698"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315698"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315698"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315698"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}