{"id":395282,"date":"2026-11-03T20:40:02","date_gmt":"2026-11-03T20:40:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/filterwell-query-loop-filters\/"},"modified":"2026-11-03T21:51:18","modified_gmt":"2026-11-03T21:51:18","slug":"filterwell","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/filterwell\/","author":18370498,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"FilterWell \u2013 Query Loop Filters","header_author":"Ra\u00fal Cerda","header_description":"Native filters for the Query Loop block: search, sorting and filters by category, tag, author, date or any taxonomy, applied with a button or instantly.","assets_banners_color":"7b5b69","last_updated":"2026-11-03 21:51:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":168,"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":"raulcerda","date":"2026-11-03 20:39:27","revision":3782592},"1.0.1":{"tag":"1.0.1","author":"raulcerda","date":"2026-11-03 21:51:18","revision":3782683}},"upgrade_notice":{"1.0.1":"<p>Adds standalone sort and search blocks for any Query Loop.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3782592,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3782592,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3782592,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3782592,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3782592,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3782683,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"FilterWell demo\",\"description\":\"Sample posts and a page with sorting, a pills row and a filters panel.\",\"author\":\"raulcerda\"},\"landingPage\":\"\\\/filters-demo\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":false},\"steps\":[{\"step\":\"login\"},{\"step\":\"setSiteOptions\",\"options\":{\"permalink_structure\":\"\\\/%postname%\\\/\"}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"filterwell\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire '\\\/wordpress\\\/wp-load.php';\\n\\n\\\/\\\/ La entrada de ejemplo de WordPress no forma parte de la demo.\\nwp_delete_post( 1, true );\\n\\n$categories = array( 'Design', 'Animation', 'Branding', 'Illustration', 'Typography', 'Web Design', 'Product' );\\n$tags       = array( 'Inspiration', 'Tutorial', 'Case study', 'Tools' );\\n$ids        = array();\\nforeach ( $categories as $name ) {\\n\\t$term         = wp_insert_term( $name, 'category' );\\n\\t$ids[ $name ] = is_wp_error( $term ) ? 0 : $term['term_id'];\\n}\\n\\n\\\/\\\/ Subcategor\\u00edas, para la segunda fila.\\n$subcategories = array(\\n\\t'UI Design'       => 'Design',\\n\\t'Icon Design'     => 'Design',\\n\\t'Motion Graphics' => 'Animation',\\n\\t'GIF'             => 'Animation',\\n);\\nforeach ( $subcategories as $name => $parent ) {\\n\\t$term         = wp_insert_term( $name, 'category', array( 'parent' => $ids[ $parent ] ) );\\n\\t$ids[ $name ] = is_wp_error( $term ) ? 0 : $term['term_id'];\\n}\\n$children = array(\\n\\t'Design'    => array( 'UI Design', 'Icon Design' ),\\n\\t'Animation' => array( 'Motion Graphics', 'GIF' ),\\n);\\n\\nfor ( $i = 0; $i < 24; $i++ ) {\\n\\t$category = $categories[ $i % count( $categories ) ];\\n\\t\\\/\\\/ Las entradas de Design y Animation se reparten entre sus subcategor\\u00edas.\\n\\tif ( isset( $children[ $category ] ) ) {\\n\\t\\t$category = $children[ $category ][ intdiv( $i, count( $categories ) ) % 2 ];\\n\\t}\\n\\twp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'post_title'    => sprintf( '%s story #%d', $category, $i + 1 ),\\n\\t\\t\\t'post_content'  => '<!-- wp:paragraph --><p>Sample content for the Query Loop Filters demo.<\\\/p><!-- \\\/wp:paragraph -->',\\n\\t\\t\\t'post_status'   => 'publish',\\n\\t\\t\\t'post_author'   => 1,\\n\\t\\t\\t'post_date'     => gmdate( 'Y-m-d H:i:s', strtotime( '-' . ( $i * 17 ) . ' days' ) ),\\n\\t\\t\\t'post_category' => array( $ids[ $category ] ),\\n\\t\\t\\t'tags_input'    => array( $tags[ $i % count( $tags ) ] ),\\n\\t\\t)\\n\\t);\\n}\\n\\n$content = <<<'HTML'\\n<!-- wp:group {\\\"align\\\":\\\"wide\\\",\\\"layout\\\":{\\\"type\\\":\\\"flex\\\",\\\"flexWrap\\\":\\\"nowrap\\\",\\\"justifyContent\\\":\\\"space-between\\\",\\\"verticalAlignment\\\":\\\"center\\\"}} -->\\n<div class=\\\"wp-block-group alignwide\\\"><!-- wp:filterwell\\\/filters {\\\"queryId\\\":1,\\\"mode\\\":\\\"auto\\\",\\\"overlayMode\\\":\\\"off\\\"} -->\\n<!-- wp:filterwell\\\/sort \\\/-->\\n<!-- \\\/wp:filterwell\\\/filters -->\\n\\n<!-- wp:filterwell\\\/filters {\\\"queryId\\\":1,\\\"mode\\\":\\\"auto\\\",\\\"overlayMode\\\":\\\"off\\\",\\\"style\\\":{\\\"layout\\\":{\\\"selfStretch\\\":\\\"fill\\\",\\\"flexSize\\\":null}}} -->\\n<!-- wp:filterwell\\\/taxonomy {\\\"termsScope\\\":\\\"top\\\",\\\"showLabel\\\":false,\\\"displayType\\\":\\\"tags\\\",\\\"showCounts\\\":false,\\\"tagsJustify\\\":\\\"center\\\"} \\\/-->\\n<!-- \\\/wp:filterwell\\\/filters -->\\n\\n<!-- wp:filterwell\\\/filters {\\\"queryId\\\":1,\\\"mode\\\":\\\"auto\\\",\\\"overlayMode\\\":\\\"always\\\",\\\"overlayPosition\\\":\\\"right\\\",\\\"overlayButtonText\\\":\\\"Filters\\\"} -->\\n<!-- wp:filterwell\\\/search \\\/-->\\n\\n<!-- wp:filterwell\\\/taxonomy {\\\"taxonomy\\\":\\\"_author\\\",\\\"displayType\\\":\\\"radio\\\"} \\\/-->\\n\\n<!-- wp:filterwell\\\/date \\\/-->\\n\\n<!-- wp:filterwell\\\/taxonomy {\\\"taxonomy\\\":\\\"post_tag\\\",\\\"label\\\":\\\"Tags\\\"} \\\/-->\\n\\n<!-- wp:filterwell\\\/active \\\/-->\\n<!-- \\\/wp:filterwell\\\/filters --><\\\/div>\\n<!-- \\\/wp:group -->\\n\\n<!-- wp:filterwell\\\/filters {\\\"queryId\\\":1,\\\"mode\\\":\\\"auto\\\",\\\"overlayMode\\\":\\\"off\\\",\\\"align\\\":\\\"wide\\\"} -->\\n<!-- wp:filterwell\\\/taxonomy {\\\"termsScope\\\":\\\"children\\\",\\\"showLabel\\\":false,\\\"displayType\\\":\\\"tags\\\",\\\"showCounts\\\":false,\\\"tagsJustify\\\":\\\"center\\\",\\\"allLabel\\\":\\\"All categories\\\"} \\\/-->\\n<!-- \\\/wp:filterwell\\\/filters -->\\n\\n<!-- wp:query {\\\"queryId\\\":1,\\\"query\\\":{\\\"perPage\\\":9,\\\"pages\\\":0,\\\"offset\\\":0,\\\"postType\\\":\\\"post\\\",\\\"order\\\":\\\"desc\\\",\\\"orderBy\\\":\\\"date\\\",\\\"inherit\\\":false},\\\"align\\\":\\\"wide\\\"} -->\\n<div class=\\\"wp-block-query alignwide\\\"><!-- wp:post-template {\\\"layout\\\":{\\\"type\\\":\\\"grid\\\",\\\"columnCount\\\":3}} -->\\n<!-- wp:post-terms {\\\"term\\\":\\\"category\\\",\\\"fontSize\\\":\\\"small\\\"} \\\/-->\\n\\n<!-- wp:post-title {\\\"isLink\\\":true,\\\"fontSize\\\":\\\"large\\\"} \\\/-->\\n\\n<!-- wp:post-date {\\\"fontSize\\\":\\\"small\\\"} \\\/-->\\n<!-- \\\/wp:post-template -->\\n\\n<!-- wp:query-pagination -->\\n<!-- wp:query-pagination-previous \\\/-->\\n\\n<!-- wp:query-pagination-numbers \\\/-->\\n\\n<!-- wp:query-pagination-next \\\/-->\\n<!-- \\\/wp:query-pagination -->\\n\\n<!-- wp:query-no-results -->\\n<!-- wp:paragraph -->\\n<p>No posts match these filters.<\\\/p>\\n<!-- \\\/wp:paragraph -->\\n<!-- \\\/wp:query-no-results --><\\\/div>\\n<!-- \\\/wp:query -->\\nHTML;\\n\\nwp_insert_post(\\n\\tarray(\\n\\t\\t'post_title'   => 'Filters demo',\\n\\t\\t'post_name'    => 'filters-demo',\\n\\t\\t'post_type'    => 'page',\\n\\t\\t'post_status'  => 'publish',\\n\\t\\t'post_content' => $content,\\n\\t)\\n);\\n\"}]}"}},"all_blocks":{"filterwell\/active":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/active","version":"1.0.0","title":"Active Filters","category":"filterwell","icon":"dismiss","description":"Shows the applied filters as removable chips, plus a button to clear them all.","ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"label":{"type":"string","default":""},"showLabel":{"type":"boolean","default":true},"headingLevel":{"type":"number","default":3},"showClearButton":{"type":"boolean","default":true},"clearButtonText":{"type":"string","default":""}},"usesContext":["filterwell\/queryId","filterwell\/inherit"],"supports":{"html":false,"interactivity":true,"color":{"text":true,"background":true,"__experimentalDefaultControls":{"text":true}},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalDefaultControls":{"fontSize":true}}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php"},"filterwell\/date":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/date","version":"1.0.0","title":"Date Filter","category":"filterwell","icon":"calendar-alt","description":"Filters the loop by a publish date range (from \/ to). Uses the field style of the theme's Search block.","ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"label":{"type":"string","default":""},"showLabel":{"type":"boolean","default":true},"fromLabel":{"type":"string","default":""},"toLabel":{"type":"string","default":""},"headingLevel":{"type":"number","default":3}},"usesContext":["filterwell\/queryId","filterwell\/inherit","filterwell\/mode","filterwell\/postType"],"supports":{"html":false,"interactivity":true,"spacing":{"margin":true},"color":{"text":true,"background":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"text":true,"background":true}},"typography":{"fontSize":true,"lineHeight":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalFontStyle":true,"__experimentalLetterSpacing":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"fontSize":true}},"__experimentalBorder":{"color":true,"radius":true,"width":true,"style":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"color":true,"radius":true,"width":true}}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php","selectors":{"root":".wp-block-filterwell-date","color":".wp-block-filterwell-date .wp-block-search__input","border":".wp-block-filterwell-date .wp-block-search__input","typography":".wp-block-filterwell-date .wp-block-search__input"}},"filterwell\/filters":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/filters","version":"1.0.1","title":"Query Loop Filters","category":"filterwell","icon":"filter","description":"Filters container connected to a Query Loop. Filters with a button or instantly and, on mobile, shows in a slide-in panel.","keywords":["filter","query","loop","search","categories","tags"],"textdomain":"filterwell","attributes":{"queryId":{"type":"number"},"inherit":{"type":"boolean","default":false},"postType":{"type":"string","default":"post"},"followArchive":{"type":"boolean","default":true},"mode":{"type":"string","enum":["button","auto"],"default":"button"},"overlayMode":{"type":"string","enum":["off","mobile","always"],"default":"mobile"},"overlayPosition":{"type":"string","enum":["left","right","top","bottom"],"default":"left"},"overlayButtonText":{"type":"string","default":""},"overlayTitle":{"type":"string","default":""},"overlayApplyText":{"type":"string","default":""},"overlayBackground":{"type":"string"},"overlayText":{"type":"string"}},"providesContext":{"filterwell\/queryId":"queryId","filterwell\/inherit":"inherit","filterwell\/postType":"postType","filterwell\/mode":"mode"},"supports":{"html":false,"interactivity":true,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"color":{"background":true,"text":true},"typography":{"fontSize":true,"__experimentalFontFamily":true},"__experimentalBorder":{"color":true,"radius":true,"width":true,"style":true}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScriptModule":"file:.\/view.js","render":"file:.\/render.php"},"filterwell\/sort":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/sort","version":"1.0.0","title":"Query Loop Sort","category":"filterwell","icon":"sort","description":"Dropdown to sort the connected Query Loop: newest, oldest, by title or most commented. Applies instantly.","keywords":["order","sort","recent","popular"],"ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"label":{"type":"string","default":""},"showLabel":{"type":"boolean","default":false},"options":{"type":"array","items":{"type":"string"},"default":["date-desc","date-asc","title-asc","comment_count-desc"]},"optionLabels":{"type":"object","default":{}},"defaultLabel":{"type":"string","default":""}},"usesContext":["filterwell\/queryId","filterwell\/inherit"],"supports":{"html":false,"interactivity":true,"spacing":{"margin":true},"color":{"text":true,"background":true,"__experimentalDefaultControls":{"text":true}},"typography":{"fontSize":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalDefaultControls":{"fontSize":true}},"__experimentalBorder":{"color":true,"radius":true,"width":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"color":true,"radius":true}}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php","selectors":{"root":".wp-block-filterwell-sort","border":".wp-block-filterwell-sort .qlf-sort__select"}},"filterwell\/actions":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/actions","version":"1.0.0","title":"Filter Buttons","category":"filterwell","icon":"button","description":"A \"Filter\" button to apply the filters (hidden in instant mode) and an optional \"Clear\" link.","ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"submitText":{"type":"string","default":""},"resetText":{"type":"string","default":""},"showReset":{"type":"boolean","default":false}},"usesContext":["filterwell\/mode"],"supports":{"html":false,"interactivity":true,"color":{"text":true,"__experimentalDefaultControls":{"text":true}},"spacing":{"margin":true,"blockGap":true},"typography":{"fontSize":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php"},"filterwell\/search":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/search","version":"1.0.0","title":"Query Loop Search","category":"filterwell","icon":"search","description":"Text search field for the connected Query Loop. Uses the same style as the theme's Search block.","ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"label":{"type":"string","default":""},"showLabel":{"type":"boolean","default":true},"placeholder":{"type":"string","default":""},"headingLevel":{"type":"number","default":3}},"usesContext":["filterwell\/queryId","filterwell\/inherit","filterwell\/mode"],"supports":{"html":false,"interactivity":true,"spacing":{"margin":true},"color":{"text":true,"background":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"text":true,"background":true}},"typography":{"fontSize":true,"lineHeight":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalFontStyle":true,"__experimentalLetterSpacing":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"fontSize":true}},"__experimentalBorder":{"color":true,"radius":true,"width":true,"style":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"color":true,"radius":true,"width":true}}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php","selectors":{"root":".wp-block-filterwell-search","color":".wp-block-filterwell-search .wp-block-search__input","border":".wp-block-filterwell-search .wp-block-search__input","typography":".wp-block-filterwell-search .wp-block-search__input"}},"filterwell\/taxonomy":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"filterwell\/taxonomy","version":"1.0.0","title":"Taxonomy Filter","category":"filterwell","icon":"tag","description":"Filters the loop by categories, tags or any taxonomy of the post type.","ancestor":["filterwell\/filters"],"textdomain":"filterwell","attributes":{"taxonomy":{"type":"string","default":"category"},"termsScope":{"type":"string","enum":["all","top","children"],"default":"all"},"label":{"type":"string","default":""},"showLabel":{"type":"boolean","default":true},"displayType":{"type":"string","enum":["checkbox","radio","select","tags"],"default":"checkbox"},"logic":{"type":"string","enum":["or","and"],"default":"or"},"multiple":{"type":"boolean","default":false},"tagsScroll":{"type":"string","enum":["mobile","always"],"default":"always"},"tagsArrows":{"type":"boolean","default":true},"tagsArrowSize":{"type":"string","default":""},"tagsJustify":{"type":"string","enum":["left","center","right"],"default":"left"},"showCounts":{"type":"boolean","default":true},"hideEmpty":{"type":"boolean","default":true},"orderBy":{"type":"string","enum":["name","count"],"default":"name"},"allLabel":{"type":"string","default":""},"headingLevel":{"type":"number","default":3},"optionElement":{"type":"string"},"optionElementBorder":{"type":"string"},"optionElementSelected":{"type":"string"},"optionElementSelectedText":{"type":"string"}},"usesContext":["filterwell\/queryId","filterwell\/inherit","filterwell\/postType","filterwell\/mode"],"supports":{"html":false,"interactivity":true,"color":{"text":true,"background":true,"__experimentalDefaultControls":{"text":true}},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalLetterSpacing":true,"__experimentalTextTransform":true,"__experimentalDefaultControls":{"fontSize":true}}},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css","render":"file:.\/render.php"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3782592,"resolution":"1","location":"assets","locale":"","width":1280,"height":717},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3782592,"resolution":"2","location":"assets","locale":"","width":1280,"height":717},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3782592,"resolution":"3","location":"assets","locale":"","width":1280,"height":717},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3782592,"resolution":"4","location":"assets","locale":"","width":1280,"height":717},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3782592,"resolution":"5","location":"assets","locale":"","width":1280,"height":717}},"screenshots":{"1":"A pills row with sorting on the left and a \"Filters\" button on the right.","2":"The slide-in filters panel with search, author, date and tags.","3":"Taxonomy Filter settings: style, arrows, counts and colors.","4":"The Query Loop Filters panel inside the Query Loop block.","5":"Two rows: main categories and the subcategories of the selected one."}},"plugin_section":[],"plugin_tags":[1220,2236,213445,944,91],"plugin_category":[57],"plugin_contributors":[290557],"plugin_business_model":[],"class_list":["post-395282","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-filter","plugin_tags-query-loop","plugin_tags-search","plugin_tags-taxonomy","plugin_category-taxonomy","plugin_contributors-raulcerda","plugin_committers-raulcerda"],"banners":{"banner":"https:\/\/ps.w.org\/filterwell\/assets\/banner-772x250.png?rev=3782592","banner_2x":"https:\/\/ps.w.org\/filterwell\/assets\/banner-1544x500.png?rev=3782592","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/filterwell\/assets\/icon.svg?rev=3782592","icon":"https:\/\/ps.w.org\/filterwell\/assets\/icon.svg?rev=3782592","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/filterwell\/assets\/screenshot-1.jpg?rev=3782592","caption":"A pills row with sorting on the left and a \"Filters\" button on the right."},{"src":"https:\/\/ps.w.org\/filterwell\/assets\/screenshot-2.jpg?rev=3782592","caption":"The slide-in filters panel with search, author, date and tags."},{"src":"https:\/\/ps.w.org\/filterwell\/assets\/screenshot-3.jpg?rev=3782592","caption":"Taxonomy Filter settings: style, arrows, counts and colors."},{"src":"https:\/\/ps.w.org\/filterwell\/assets\/screenshot-4.jpg?rev=3782592","caption":"The Query Loop Filters panel inside the Query Loop block."},{"src":"https:\/\/ps.w.org\/filterwell\/assets\/screenshot-5.jpg?rev=3782592","caption":"Two rows: main categories and the subcategories of the selected one."}],"raw_content":"<!--section=description-->\n<p>FilterWell adds filtering blocks that connect to the core <strong>Query Loop<\/strong> block. Visitors can search, sort and filter posts, pages or custom post types, and the results update without reloading the page, using the WordPress Interactivity API.<\/p>\n\n<p>Everything is built with native blocks and takes its look from your theme: fonts, colors, buttons and form fields follow the Styles you already defined.<\/p>\n\n<h4>Blocks<\/h4>\n\n<ul>\n<li><strong>Query Loop Filters<\/strong> \u2013 the container. It connects to a Query Loop and decides whether filters apply instantly or with a \"Filter\" button. On mobile, it can show the filters in a slide-in panel.<\/li>\n<li><strong>Taxonomy Filter<\/strong> \u2013 categories, tags or any taxonomy, shown as checkboxes, single choice, a dropdown or a row of pills. Includes result counts that take the other active filters into account and can hide options without results. For hierarchical taxonomies it can show only the main terms, or only the subterms of the selected term.<\/li>\n<li><strong>Author Filter<\/strong> \u2013 the same styles, listing the authors that have published content.<\/li>\n<li><strong>Date Filter<\/strong> \u2013 a publish date range (from \/ to).<\/li>\n<li><strong>Query Loop Search<\/strong> \u2013 a text search field that uses your theme's Search block style.<\/li>\n<li><strong>Query Loop Sort<\/strong> \u2013 a dropdown to sort by newest, oldest, title, recently updated or most commented. You choose the options and their labels.<\/li>\n<\/ul>\n\n<p>Need only a search field or a sort dropdown next to your loop? Insert <strong>Query Loop Search<\/strong> or <strong>Query Loop Sort<\/strong> anywhere on the page: they come already wrapped in their own Query Loop Filters block.\n* <strong>Filter Buttons<\/strong> \u2013 \"Filter\" and \"Clear\" buttons.\n* <strong>Active Filters<\/strong> \u2013 the applied filters as removable chips.<\/p>\n\n<h4>Highlights<\/h4>\n\n<ul>\n<li><strong>Pills row<\/strong>: a single scrollable row with arrows and fading edges, which can also be swiped on mobile.<\/li>\n<li><strong>Category and subcategory rows<\/strong>: a first row with the main categories and a second row, shown only when needed, with the subcategories of the selected one.<\/li>\n<li><strong>Archive pages<\/strong>: on a category, tag, taxonomy or author archive, the current term is marked as selected and choosing another one goes to its archive URL. On date archives (<code>\/2025\/09\/<\/code>), the Date Filter shows that period.<\/li>\n<li><strong>Shareable URLs<\/strong>: filters are stored in the URL, so filtered results can be shared and the browser back and forward buttons work.<\/li>\n<li><strong>Several loops per page<\/strong>: name your loops and choose which one each set of filters controls. You can also add filters directly from the Query Loop sidebar.<\/li>\n<li><strong>Accessible<\/strong>: real form controls, keyboard support, a focus-trapped mobile panel and screen reader announcements when results change.<\/li>\n<li><strong>No settings page and no database tables.<\/strong><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from the Plugins screen, or upload the <code>filterwell<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>In the block editor or the Site Editor, add a <strong>Query Loop<\/strong> block.<\/li>\n<li>Select the Query Loop and, in its <strong>Query Loop Filters<\/strong> panel, click <strong>Add filters above the loop<\/strong>. You can also insert the <strong>Query Loop Filters<\/strong> block anywhere and choose the loop in its <strong>Connection<\/strong> panel.<\/li>\n<li>Add the filter blocks you need inside the container.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20custom%20post%20types%20and%20custom%20taxonomies%3F\"><h3>Does it work with custom post types and custom taxonomies?<\/h3><\/dt>\n<dd><p>Yes. The Taxonomy Filter lists the taxonomies of the post type used by the connected Query Loop.<\/p><\/dd>\n<dt id=\"can%20the%20filters%20and%20the%20loop%20be%20in%20different%20places%3F\"><h3>Can the filters and the loop be in different places?<\/h3><\/dt>\n<dd><p>Yes. The container can be anywhere on the page or template. If the loop is outside the current content (for example, in the template while the filters are in a page), type the loop ID in <strong>Loop ID (manual)<\/strong>.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20archive%20pages%3F\"><h3>What happens on archive pages?<\/h3><\/dt>\n<dd><p>On <code>\/category\/design\/<\/code>, for example, the category filter shows <em>Design<\/em> as selected and the loop only shows those posts. Choosing another category goes to its archive URL, keeping the other filters. Loops that inherit the template query always do this. Loops with their own query do it when <strong>Follow the current archive<\/strong> is enabled in the container.<\/p>\n\n<p>On date archives such as <code>\/2025\/09\/<\/code>, the Date Filter shows the first and last day of that month. Changing the dates keeps loops with their own query on the same page with the new range, and takes loops that inherit the template query to the posts page.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20categories%20and%20subcategories%20in%20two%20rows%3F\"><h3>How do I show categories and subcategories in two rows?<\/h3><\/dt>\n<dd><p>Add two Taxonomy Filter blocks for Categories, each one in its own Query Loop Filters container. Set <strong>Terms to show<\/strong> to <em>Top-level terms only<\/em> in the first one and to <em>Subterms of the selected term<\/em> in the second one. The second row stays hidden until a category with subcategories is selected.<\/p><\/dd>\n<dt id=\"how%20is%20%22most%20commented%22%20sorting%20calculated%3F\"><h3>How is \"most commented\" sorting calculated?<\/h3><\/dt>\n<dd><p>It uses the number of approved comments of each post. WordPress does not track views, so there is no \"most viewed\" option.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20javascript%3F\"><h3>Does it work without JavaScript?<\/h3><\/dt>\n<dd><p>In \"With button\" mode (the default), the filters are a regular form, so they keep working with a normal page load. Instant mode, the pills row arrows and the mobile panel need JavaScript.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20code%20of%20the%20javascript%20and%20css%20files%3F\"><h3>Where is the source code of the JavaScript and CSS files?<\/h3><\/dt>\n<dd><p>The plugin includes the source files in the <code>src<\/code> folder, next to the compiled files in <code>build<\/code>. To compile them, run <code>npm install<\/code> and then <code>npm run build<\/code> in the plugin folder. The build uses the official <code>@wordpress\/scripts<\/code> package, listed in <code>package.json<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New: \"Query Loop Sort\" and \"Query Loop Search\" can be inserted anywhere on the page, on their own. They connect to the loop like the full filters block.<\/li>\n<li>New: the default Query Loop Filters block now includes the sort dropdown.<\/li>\n<li>Fix: sorting by title ignores leading punctuation, so \"\u00bfC\u00f3mo\u2026?\" is listed with the C titles. This also applies to loops sorted by title by default.<\/li>\n<li>New: all FilterWell blocks are grouped in their own \"FilterWell\" section of the block inserter.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Native filters for the Query Loop block: search, sorting, category and tag pills, author and date filters, without page reloads.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/395282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=395282"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/raulcerda"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=395282"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=395282"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=395282"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=395282"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=395282"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=395282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}