Display, sort or filter any pages or post types by multiple taxonomies and/or terms with AJAX. Advanced AJAX post type filtering and search with combined (multiple) taxonomies and/or terms. (like post by categories/tags or any custom post type taxonomies like “portfolio-categories”). It works with most (99%) of the themes and post types. The plugin designed only to display an “archive” for the post type, it does not display any single page.
Features
- Working with any themes and any post types.
- None, single or multiple filter based on taxonomies and terms. Optional multi selectable filter(s).
- Multiple styles: masonry, "equal height", carousel (slider), timeline and regular layout.
- Filter can be additive or subtractive.
- Options to customize query, see below.
- Search in pre-selected taxonomies and terms.
- Working via shortcode, can be used multiple times on a posts or pages (or custom post types).
- AJAX pagination, infinite loading or "read more" loading.
- Update browser URL with infinite or read more loading based on page and scroll position.
- Turn on filters, set page number or search for a string via link
Useful if you want to "preselect" some filters or page or search with a link. - Store session (page number, selected filters and search).
Useful if visitor is hit back or click on back button (if any) on the single page/post. - Bootstrap 4 Flex grid.
- JavaScript Hooks.
https://github.com/carldanley/WP-JS-Hooks - Translatable via po/mo files. Pot included.
- Multiple hover effects.
https://tympanus.net/Development/HoverEffectIdeas/index.html
https://tympanus.net/Development/HoverEffectIdeas/index2.html
Demo
Please click on the filters or search for someting.Screenshots
How to use
The plugin working via [exopite-multifilter]
shortcodes, does not display any admin options.
All options are optional. Without options, shortcode will display posts with filter of categories.
You can use multiple shortcodes on the same page/post.
On posts with 'pretty' permalink, multiple shortcodes with pagination without AJAX not working well.
Examples:
- To display posts with a selected categories, eg.:
[exopite-multifilter thumbnail-size-single-row="your-big-size" thumbnail-size-multi-row="your-small-size" posts_per_page="6" posts_per_row="3" effect="goliath" pagination="readmore" taxonomy_terms__in="category(cat1-slug, cat1-slug)"]
- With custom post types, eg.:
[exopite-multifilter post_type="exopite-portfolio" thumbnail-size-single-row="blog-list-full" thumbnail-size-multi-row="blog-list-multiple" taxonomies_terms="exopite-portfolio-category, exopite-portfolio-tag"]
[exopite-multifilter thumbnail-size-single-row="blog-list-full" thumbnail-size-multi-row="blog-list-multiple"]
Available options
Options | Values | Defaults |
---|---|---|
post_type |
['post-type-slug'] as post type slug | post |
posts_per_page |
['number'] how many post per page per shortcode | 4 |
posts_per_row |
['1' - '4'] how many posts per row per shortcode | 2 |
display_title |
['true' or 'false'] display post title | false |
display_pagination |
['true' or 'false'] display pagination | true |
display_filter |
['true' or 'false'] display filter | true |
blog_layout |
['top', 'left', 'right', 'zigzag' or 'none'] | top |
no-gap |
['true' or 'false'] hide gap between post | false |
except_lenght |
['number'] the lenght of the excerpt by words, '0' means no excerpt | 0 |
except_more |
['text'] excerpt more | |
pagination |
['pagination', 'readmore' or 'infinite'] the type of the pagination | pagination |
multi_selectable |
['true' or 'false'] single or multiselect: true or false | true |
thumbnail-size-single-row |
['thumbnail-size-slug'] thumbnail size for single post per row | full |
thumbnail-size-multi-row |
['thumbnail-size-slug'] thumbnail size for multiple post per row (beware the width: displayed one thumbnail per row in mobile) |
large |
include_taxonomies |
['category, post_tag' or 'post_tag' etc...] display selected taxonomies | category |
taxonomy_terms__in |
['category(term1, terms2, ...)] display selected terms in taxonomy | |
update_paged |
['true' or 'false'] Update page in browser URL bar on readmore and infinite loading based on viewport | false |
display_page_number |
['true' or 'false'] Show page number between loads in infinite and readmore | false |
paged |
['number'], Set start page number if not already paged | 1 |
effect |
['apollo', 'duke', 'goliath', 'julia', 'lexi', 'ming', 'steve' or none] | apollo |
search |
['search'] if set, filter will be disabled | |
load_from_url |
['true' or 'false'] if set, plugin load filters, pagination or search from URL. Will override localstorage. Set container_id in shortcode as well as in URL are required to enable this option. Format need to be a JSON object, like: //www.site.com/?[...&]multifilter={"[container_id]":{"[taxonomies_terms_name]":{"[taxonomy1]":["subtaxonomy[,...]"],"[taxonomy2]":["subtaxonomy[,...]"]},"paged":[page_number],"search":"[search_for]"}} |
false |
store_session |
['true' or 'false'] Store current session (page number, selected filters and search). Useful if visitor is hit back or click on back button | false |
in_all_taxnomies |
['true' or 'false'] If true, match all taxonomy queries (subtractive query), otherwise posts which match at least one taxonomy query (additive query). | true |
random |
['true' or 'false'] randomize query (pagination, filters and search are off) | false |
order |
['asc' or 'desc'] Designates the ascending or descending order of the 'orderby' parameter. | desc |
orderby |
['string' or 'string1|string2|...'] Sort retrieved posts by parameter. WordPress default is 'date (post_date)'. | |
meta_key |
['meta-key'] Custom Field Parameter | |
display_metas |
[date, author, commentcount, taxonomy, last-modified] string or comma separated list. | |
display_metas_taxonomies |
only if display_metas has 'taxonomy', taxonomy name to display (eg. for posts: category, post_tag), string or comma separated list. | |
container_id |
['string'], Set wrapper/container id | |
container_classes |
['string or a comma separated list'], Set wrapper/container class[es] | |
style |
['masonry', 'equal-height', 'carousel' or empty], equal-height for columns (using flex) | |
masonry_type |
['waterfall-kudago', 'masonry-desandro'], type of masonry | waterfall-kudago |
col_min_width |
['number'] in px, only for waterfall-kudago. It will ignore posts_per_row . |
340 |
gallery_mode |
['true', 'false'] Galley mode. On thumbnail click, open images instead of post type single. Post without a thumbnail will be ignored. | false |
archive_mode |
['true', 'false'] Automatically deal with archives. Only for posts. (Random, search, filters and taxonomies_terms will be disabled; posts_per_page is set to WordPress setting) | false |
ajax_mode |
['true', 'false'] Possibility to turn off AJAX loading. (Filters are off, no infinite or readmore pagination). | false |
target_override |
['true', 'false'] Override target location. Use <!-- exopite-multifilter-external-link: custom (absolute/relative) url --> or <!-- exopite-multifilter-internal-link: custom (absolute/relative) url --> from content instead of the 'the_perlamink', on 'gallery_mode' this won't change image url. Open exopite-multifilter-external-link in new tab and display taxonomies without links. |
false |
post_in |
['post_id,post_id,...'] use post ids. Specify posts to retrieve. | |
post_not_in |
['post_id,post_id,...'] use post ids. Specify post NOT to retrieve. | |
date_from |
['2001-12-31'] iso date. Specify date to retrieve post AFTER. | |
date_to |
['2002-12-31'] iso date. Specify date to retrieve post BEFORE. | |
video |
[meta_field_name] get video url from video field name. Set poster to post thumbnail. If empty video url, post thumbnail will be displayed. | false |
video-args |
['controls muted autoplay'] extra args to video tag. | controls muted |
autoplay |
['true', 'false'] carousel autoplay (only style="carousel"). | true |
arrows |
['true', 'false'] carousel display arrows (only style="carousel"). | true |
autoplay_speed |
['number'] carousel time to display each slide (only style="carousel"). | 300 |
infinite |
['true', 'false'] carousel infinite (loop) play (only style="carousel"). | true |
speed |
[1000] carousel slide changing speed (only style="carousel"). | 1000 |
pause_on_hover |
['true', 'false'] carousel paise play on mouse hover (only style="carousel"). | true |
dots |
['true', 'false'] carousel display dots (only style="carousel"). | true |
adaptive_height |
['true', 'false'] carousel adaptive height (only style="carousel"). | false |
mobile_first |
['true', 'false'] carousel mobile first (only style="carousel"). | false |
slides_per_row |
['number'] carousel slides per row (only style="carousel"). | 1 |
slides_to_show |
['number'] carousel slides to show (only style="carousel"). | 1 |
slides_to_scroll |
['number'] carousel to scroll per turn (only style="carousel"). | 1 |
use_transform |
['true', 'false'] carousel use css transition (only style="carousel"). | true |