{"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-01T06:59:17","modified_gmt":"2026-09-01T06:59:17","slug":"4wp-faq","status":"publish","type":"plugin","link":"https:\/\/sna.wordpress.org\/plugins\/4wp-faq\/","author":17741300,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.0","stable_tag":"2.1.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-01 06:59:17","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":463,"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}},"upgrade_notice":{"2.1.0":"<p>Registry hub blocks: FAQ List, Card, and Categories. Complete setup and rescan, then insert the blocks in the Site Editor.<\/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":{"$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"},"categoryTermId":{"type":"number","default":0},"categoryName":{"type":"string","default":""}},"editorScript":"file:.\/build\/index.js"}},"tagged_versions":["1.0.0","2.0.0","2.0.1","2.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"4WP FAQ block wrapping core Accordion in the editor","2":"Settings screen \u2014 overview stats, rescan, and JSON-LD toggle","3":"Block sidebar \u2014 per-block JSON-LD override"}},"plugin_section":[262246],"plugin_tags":[1741,1643,148076,2516,186],"plugin_category":[43,55],"plugin_contributors":[262731],"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_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>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<\/li>\n<li>Optional <strong>FAQ registry<\/strong> CPT with content scan and usage stats<\/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>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<li><strong>FAQ List<\/strong>, <strong>FAQ Card<\/strong>, and <strong>FAQ Categories<\/strong> blocks for a registry hub in the Site Editor<\/li>\n<li>Category nav filters the list in place (Interactivity); optional SEO-friendly category URLs<\/li>\n<li>Optional core <strong>Search<\/strong> binding to filter the FAQ list without a page reload<\/li>\n<li><strong>Yoast SEO<\/strong> \u2014 FAQPage nodes merge into Yoast\u2019s schema graph when Yoast is active<\/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.<\/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 future features.<\/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<\/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=\"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.1.0<\/h4>\n\n<ul>\n<li>Add: 4WP FAQ List, Card, and Categories blocks for a registry FAQ hub in FSE.<\/li>\n<li>Add: shared include\/exclude filters between List and Categories; All categories nav item.<\/li>\n<li>Add: Interactivity filtering, optional SEO category URLs, and related Search binding.<\/li>\n<li>Add: Yoast SEO schema graph merge for FAQPage when Yoast is active.<\/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 FSE list\/card\/category blocks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315698"}],"author":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/4wpdev"}],"wp:attachment":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315698"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315698"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315698"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315698"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315698"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}