diff --git a/modules/search/instant-search/components/search-filter-post-types.jsx b/modules/search/instant-search/components/search-filter-post-types.jsx
index 188edb8cdca91..7a7bdde18f58f 100644
--- a/modules/search/instant-search/components/search-filter-post-types.jsx
+++ b/modules/search/instant-search/components/search-filter-post-types.jsx
@@ -17,7 +17,7 @@ export default class SearchFilterPostTypes extends Component {
toggleFilter = () => {
const selected = getCheckedInputNames( this.filtersList.current );
this.setState( { selected }, () => {
- this.props.onChange( 'postTypes', selected );
+ this.props.onChange( 'post_types', selected );
} );
};
diff --git a/modules/search/instant-search/components/search-filter-taxonomies.jsx b/modules/search/instant-search/components/search-filter-taxonomies.jsx
index fbd93a7fcfdba..5afd3d2ac6f96 100644
--- a/modules/search/instant-search/components/search-filter-taxonomies.jsx
+++ b/modules/search/instant-search/components/search-filter-taxonomies.jsx
@@ -3,30 +3,51 @@
/**
* External dependencies
*/
-import { h, Component } from 'preact';
+import { h, createRef, Component } from 'preact';
import strip from 'strip';
+import { getCheckedInputNames } from '../lib/dom';
export default class SearchFilterTaxonomies extends Component {
+ constructor( props ) {
+ super( props );
+ this.state = { selected: this.props.initialValue };
+ this.filtersList = createRef();
+ }
+
+ toggleFilter = () => {
+ const selected = getCheckedInputNames( this.filtersList.current );
+ this.setState( { selected }, () => {
+ this.props.onChange( this.props.configuration.taxonomy, selected );
+ } );
+ };
+
+ renderTaxonomy = ( { key, doc_count: count } ) => {
+ return (
+
+
+
+
+ );
+ };
+
render() {
return (
-
{ this.props.filter.name }
-
);
diff --git a/modules/search/instant-search/components/search-filters-widget.jsx b/modules/search/instant-search/components/search-filters-widget.jsx
index 82907070f09a6..8c5a39fa03160 100644
--- a/modules/search/instant-search/components/search-filters-widget.jsx
+++ b/modules/search/instant-search/components/search-filters-widget.jsx
@@ -23,7 +23,14 @@ export default class SearchFiltersWidget extends Component {
return results && ;
case 'taxonomy':
return (
- results &&
+ results && (
+
+ )
);
case 'post_type':
return (
@@ -31,7 +38,7 @@ export default class SearchFiltersWidget extends Component {
diff --git a/modules/search/instant-search/lib/api.js b/modules/search/instant-search/lib/api.js
index 70e523b6210e8..ec8c5d41f9e33 100644
--- a/modules/search/instant-search/lib/api.js
+++ b/modules/search/instant-search/lib/api.js
@@ -43,11 +43,16 @@ function buildFilterObject( filterQuery ) {
}
const filter = { bool: { must: [] } };
- if ( Array.isArray( filterQuery.postTypes ) && filterQuery.postTypes.length > 0 ) {
- filterQuery.postTypes.forEach( postType => {
+ if ( Array.isArray( filterQuery.post_types ) && filterQuery.post_types.length > 0 ) {
+ filterQuery.post_types.forEach( postType => {
filter.bool.must.push( { term: { post_type: postType } } );
} );
}
+ if ( Array.isArray( filterQuery.post_tag ) && filterQuery.post_tag.length > 0 ) {
+ filterQuery.post_tag.forEach( tag => {
+ filter.bool.must.push( { term: { 'tag.slug': tag } } );
+ } );
+ }
return filter;
}
diff --git a/modules/search/instant-search/lib/query-string.js b/modules/search/instant-search/lib/query-string.js
index 93e51631a28b1..be28d96e6d0ff 100644
--- a/modules/search/instant-search/lib/query-string.js
+++ b/modules/search/instant-search/lib/query-string.js
@@ -44,7 +44,9 @@ export function getFilterQuery( filterKey ) {
}
return {
- postTypes: getFilterQueryByKey( 'postTypes' ),
+ category: getFilterQueryByKey( 'category' ),
+ post_tag: getFilterQueryByKey( 'post_tag' ),
+ post_types: getFilterQueryByKey( 'post_types' ),
};
}