This plugin adds custom fields to pages, posts and products, and renders front-end filter forms so visitors can filter by those fields, tags, taxonomies and WooCommerce attributes. Here's how to install it, define fields, build your first filter and keep the attribute index fresh.
Upload the plugin zip and activate it.
Label, type, options, post types.
On each page, post or product.
Build the shortcode, paste it anywhere.
Demfilz Fields and Filters does two jobs that belong together. First, it lets you define custom fields - text, text area, number, select, radio buttons, checkbox, date or URL - and attach them to pages, posts, products or any public post type. Second, it renders front-end filter forms with a paginated results grid, so visitors can filter your content by those fields, by tags, categories or any taxonomy, by WooCommerce global attributes and by custom per-product attributes.
The free plugin is complete on its own. A separate Pro add-on ($19.95/year via Stripe) makes filtering instant (AJAX, no page reloads), shows live result counts on every option, and adds colour swatch and star rating field types plus pill-style controls.
You'll need: WordPress 6.2+ and PHP 7.4+. WooCommerce is optional - product support and attribute filters activate automatically when it's present.
Plugins → Add New and search "Demfilz Fields and Filters" (or download the .zip there and upload it via Plugins → Add New → Upload Plugin).Go to Fields & Filters → Fields and add a field:
Each type filters the natural way: selects and radios become dropdowns (or multi-select checklists), numbers become min/max ranges, dates become from/to pickers, checkboxes become a yes toggle, and text fields match keywords.
Go to Fields & Filters → Filters. Tick what you want in the builder - content type, fields, taxonomies, attributes, extras - and copy the generated shortcode into any page. Examples:
[dfaf_filters post_type="product" taxonomies="product_cat,pa_colour" multi="pa_colour"] - products filtered by category and colour (multi-select).[dfaf_filters post_type="post" fields="region,rating" taxonomies="post_tag"] - posts filtered by two custom fields and tags.[dfaf_filters post_type="product" form_only="1" action="/shop/"] - just the form, targeting your shop archive (enable Archive filtering in Settings).Useful parameters:
| Parameter | What it does |
|---|---|
post_type | What to list: post, page, product or any public post type. Default post. |
fields | Comma-separated field keys. Default: all filterable fields for the post type. |
taxonomies | Comma-separated taxonomies: post_tag, category, product_cat, or global attributes like pa_colour. |
attributes | Comma-separated custom (per-product) attribute names, e.g. material. |
multi | Field keys or taxonomies to render as multi-select checkbox lists. |
search / sort | Show the keyword box / sort dropdown (1 or 0, default 1). |
per_page / columns | Results per page and grid columns (1-4). |
form_only / results_only / action | Split form and results, or point the form at another page or archive. |
Global attributes (created under Products → Attributes, taxonomies named pa_*) work through the taxonomies parameter - nothing to set up.
Custom per-product attributes (typed directly on a product's Attributes tab) are indexed into fast, queryable meta automatically every time a product is saved. For products that existed before the plugin was installed, go to Fields & Filters → Settings and click Rebuild attribute index once. Values separated with a pipe (Oak | Walnut) become individual filter options.
Fields and Filters Pro ($19.95/year) is a separate add-on plugin that installs alongside the free one:
After subscribing you receive a licence key by email. Install the Pro add-on, then enter the key under Fields & Filters → Licence / Pro. Pro settings (AJAX, counts, pills) live on the same screen.
Check three things: the field is marked Filterable, it applies to the post type you're listing, and (for select/radio types) it has options defined. Fields with no possible values render nothing rather than an empty control.
Custom attributes are discovered when products are saved. Run Rebuild attribute index in Settings once and it will appear in the builder's attribute list. Global (pa_*) attributes don't need indexing - use the taxonomies parameter instead.
Yes - place [dfaf_filters form_only="1" action="/results-page/"] where the form goes and [dfaf_filters results_only="1"] on the results page (same post_type on both). For shop archives, enable Archive filtering in Settings and point the action at your shop URL.
No. Values are ordinary post meta queried with standard meta and taxonomy queries, and custom product attributes are pre-indexed on save specifically so nothing parses serialized data at filter time. Pro's live counts are cached and query-budgeted.
The plugin removes its own options. Field values stored on your posts are kept unless you ticked "delete stored field values on uninstall" in Settings first.
We build WordPress and WooCommerce plugins to order - filtering, fields, feeds, integrations and more. Tell us what you need and we'll come back with a plan and a fixed quote.