{"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-02T21:02:16","modified_gmt":"2026-09-02T21:02:16","slug":"4wp-faq","status":"publish","type":"plugin","link":"https:\/\/zh-sg.wordpress.org\/plugins\/4wp-faq\/","author":17741300,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.0","stable_tag":"2.2.0","tested":"7.1","requires":"6.0","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-02 21:02:16","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":499,"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}},"upgrade_notice":{"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-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},"seoUrls":{"type":"boolean","default":false},"includeTermIds":{"type":"array","default":[],"items":{"type":"number"}},"excludeTermIds":{"type":"array","default":[],"items":{"type":"number"}}},"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}},"editorScript":"file:..\/..\/build\/faq-list.js","style":"file:..\/..\/build\/style-faq-list.css","editorStyle":"file:..\/..\/build\/style-faq-list.css"},"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},"editorScript":"file:..\/..\/build\/faq-count.js"},"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":""}},"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}},"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"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"4WP FAQ block wrapping core Accordion in the editor","2":"Settings \u2014 overview, rescan, JSON-LD, preview count, and pretty category URLs","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 is a smart wrapper around WordPress core <strong>Accordion<\/strong> blocks. It adds FAQPage JSON-LD, an optional aggregated FAQ registry, and usage context while keeping your front-end design intact.<\/p>\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 code and releases: <a href=\"https:\/\/github.com\/4wpdev\/4wp-faq\">github.com\/4wpdev\/4wp-faq<\/a><\/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 FAQPage 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 (Interactivity API)<\/li>\n<li><strong>4WP FAQ Count<\/strong> (<code>forwp\/faq-count<\/code>) \u2014 live count for All \/ current 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 shown in the inserter)<\/li>\n<\/ul>\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 above \u2014 not in the distributed plugin ZIP.<\/p>\n\n<p>From a clone of the repository:<\/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<h4>Key features<\/h4>\n\n<ul>\n<li>Wrap <strong>Accordion<\/strong> \/ <strong>Accordion Item<\/strong> (legacy <strong>Details<\/strong> supported)<\/li>\n<li><strong>FAQPage JSON-LD<\/strong> \u2014 site-wide toggle plus per-block override; hub pages output the questions actually shown<\/li>\n<li>Optional <strong>FAQ registry<\/strong> CPT with content scan and usage stats (\u201cUsed in\u201d sources)<\/li>\n<li><strong>FAQ categories<\/strong> \u2014 create in admin, pick per block, or auto-create on scan from the page<\/li>\n<li><strong>FSE hub blocks<\/strong> \u2014 List, Categories, Count, and Card for registry-powered FAQ archives<\/li>\n<li>Preview count per category on the All view + optional pretty category URLs<\/li>\n<li>Drag-and-drop category order on the taxonomy screen<\/li>\n<li><strong>Polylang<\/strong> \u2014 registry categories respect the language of the page where the FAQ block lives<\/li>\n<li>Setup wizard for registry post type and taxonomy slugs<\/li>\n<li><strong>Convert to FAQ<\/strong> toolbar action on Accordion blocks<\/li>\n<li>Default <strong>Accordion<\/strong> template when inserting the FAQ block; <strong>Add FAQ item<\/strong> in the editor<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Build FAQs with core Accordion blocks (or convert existing Accordion).<\/li>\n<li>Click <strong>Convert to FAQ<\/strong> to wrap content in <code>forwp\/faq<\/code>.<\/li>\n<li>Enable JSON-LD in <strong>FAQ \u2192 Settings<\/strong> (recommended for SEO) or per block.<\/li>\n<li>Optionally complete setup to aggregate questions into a registry list, then place List + Categories on a hub page.<\/li>\n<\/ol>\n\n<p>JSON-LD on the front end does not require the registry. The registry is for browsing, reuse tracking, and hub layouts.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/4wp-faq\/<\/code> or install from the Plugins screen.<\/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 and registry 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<\/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.<\/p><\/dd>\n<dt id=\"is%20json-ld%20enabled%20by%20default%3F\"><h3>Is JSON-LD enabled by default?<\/h3><\/dt>\n<dd><p>No. Turn it on under <strong>FAQ \u2192 Settings<\/strong> (site-wide) or enable it for individual blocks in the block sidebar.<\/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.<\/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 change 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\n<\/dl>\n\n<!--section=changelog-->\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<li>Stabilize readme Stable tag \/ plugin header \/ package.json on <strong>2.2.0<\/strong>.<\/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":"Smart FAQ wrapper for core Accordion: JSON-LD, optional registry, and per-block SEO\u2014without duplicating your content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315698"}],"author":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/4wpdev"}],"wp:attachment":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315698"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315698"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315698"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315698"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315698"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}