Description
The only free Elementor plugin for unlimited pro-grade filtering of all your post content. Filter by taxonomies, custom fields, ACF, relational fields, and numeric ranges – with seamless integration, no restrictions, and full customization. Get advanced filtering features without paying for limitations.
Installation
- Upload the plugin files to the
/wp-content/plugins/better-post-and-filter-widgetsdirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the 'Plugins' screen in WordPress.
- Navigate to the Elementor editor and start using the widgets.
Frequently Asked Questions
Connecting the Filter Widget
To link your Filter Widget to a Post or Loop Grid widget, follow these steps:
- Open the Post Widget settings in Elementor.
Go to the Advanced tab and enter the following in the CSS Classes field:
results - Open your Filter Widget.
In the Post Widget Target field, enter:
.results - Save the page. The filter will now update the correct widget.
Note: results is a reference class. You can choose any class or id name you like, as long as the Filter Widget target matches the Post Widget class (with a .) or id (with a #).
Does the Filter Widget work with custom post types (CPT)?
Yes, it does out-of-the-box, but be aware of the following:
- The post type you choose in the filter will override the post type selected in the post widget. For example, if your post widget is showing posts, but you select products in the filter, once you interact with the filter, the post widget will display products instead of posts.
- If you want the filter to return results based on the selected meta or taxonomy instead of the post type, you can choose the "Any" option under the post type to filter.
- Dynamic filtering can be enabled to include the current archive context in the filter results.
How can I report security bugs?
You can report security bugs through the Patchstack Vulnerability Disclosure Program. The Patchstack team helps validate, triage and handle any security vulnerabilities. Report a security vulnerability.
Is the Filter Widget compatible with other widgets?
The filter widget is designed to work with most widgets that use a post query, such as post or product widgets. If a widget pulls data via a post query, the filter can potentially hook into it. However, pagination is fully supported only for widgets from Better Post & Filter Widgets for Elementor and Elementor Pro. Other widgets may lack pagination or loading animations, as these features rely on specific HTML and CSS.
The post meta are not displaying
The list of available meta fields will only display for the selected post type.
For more details, check out this article.
Why isn't AJAX working on my site?
AJAX should work automatically on most WordPress themes built according to standards. However, if AJAX isn't working, here are a few things to check:
- Check if WordPress logging is enabled. Sometimes, when WordPress logging is enabled, it can interfere with AJAX functionality. Try disabling logging to see if that resolves the issue.
- Ensure your theme supports AJAX. Some themes, especially older or custom-built ones, might not properly support AJAX. Make sure your theme is up to date and follows WordPress best practices.
- Check for JavaScript errors. JavaScript errors on the page can prevent AJAX from working. Open your browser's developer tools and check the console for any errors that could be affecting AJAX functionality.
- Conflicting plugins. Certain plugins, especially caching or performance optimization plugins, might conflict with AJAX. Try temporarily disabling them to see if the issue persists.
- Check server-side restrictions. Some servers might have restrictions that prevent AJAX requests from functioning properly. Contact your hosting provider to ensure that AJAX requests are not being blocked by security rules or firewall settings.
If none of these steps resolve the issue, feel free to reach out on the support forum for further assistance.
Screenshots
Overview of the widgets on a page.
Backend view of the Elementor edit screen, showing the filter widget options.
Backend view of the Elementor edit screen, showing the post widget options.
Changelog
1.8.3 – 2026-02-06
- Fix: Improved Elementor template auto-detection for more reliable AJAX rendering when using Elementor Pro templates.
- Tweak: Added clearer validation and fallback logic when resolving templates, pages, and widget data during AJAX requests.
- Tweak: Clarified descriptions for performance-related options to help avoid incompatible configurations.
1.8.2 – 2026-02-02
- Fix: Select2 search field incorrectly triggering filters on input.
- Fix: Selected term classes incorrectly adding extra words in some setups.
- Fix: Interaction issues with free numeric input ranges on mobile devices.
- Fix: Numeric ranges being reset when using pagination with faceted filtering enabled.
- Fix: "No posts found" message on the post widget causing layout issues.
- Fix: Meta-based filters not being correctly taken into account by faceted logic.
- Fix: Spacing inconsistency for term count numbers on dropdowns.
- Fix: Numbered pagination not working correctly in some setups.
- Fix: Post widget feed layout rendering incorrectly with non-Latin characters.
- New: URL parameters can now trigger Select and Select2 fields.
- New/Fix: Added "Elementor Template ID" field under Additional Options for filter, search, and sorting widgets. Use this to manually specify the template ID containing the target widget when AJAX filtering fails inside an Elementor Pro template.
1.8.0 – 2026-01-22
- New: Filter widget now supports true faceted filtering, with dynamic counts and real-time option updates.
- Unavailable options can be greyed out or hidden to prevent dead-end combinations.
- Faceted behavior is fully opt-in and can be enabled globally or per individual filter group.
- Feature will continue to be refined and expanded in future releases.
- New: Post widget now has a feed-style layout, letting you group posts by taxonomy or specific terms.
- New: Free numeric input for meta-based filters.
- Numeric filters are no longer limited to predefined ranges.
- Users can manually enter custom minimum and maximum values.
- Backend users can define custom placeholders for numeric inputs.
- New: Start expanded option for Filter widget toggle mode.
- New: Custom AJAX handler (experimental).
- Optional high-performance replacement for admin-ajax.php.
- Can be enabled per Filter widget under Performance settings.
- Fully isolated and opt-in — safe for testing without affecting existing sites.
- Planned to become the default in a future release.
- Fix: Corrected a typo in the Post widget where "Excluded terms" was labeled as "Included terms".
- Fix: Fixed an issue where the inner wrapper class filter was not applied correctly in the Post widget.
- Fix: Fixed Filter widget Load More pagination compatibility with Elementor Pro widgets.
- Fix: Potentially resolved an Elementor editor issue where container CSS could break when using the main query in the Post widget.
- Tweak: Post terms output can now be displayed as: comma-separated, ul or ol.
- Tweak: Improved widget UI consistency by replacing RAW text with notice controls where appropriate.
- Dev: Filter widget settings are now handled per widget rather than globally across linked filters.
1.7.3 – 2025-12-03
- Fix: Search bar issue when multiple widgets share the same filter.
1.7.2 – 2025-12-03
- Fix: Corrected an issue where using ?results=filter-XXXXXXX did not reload the page with the correct filter options pre-selected.
- Fix: Resolved an issue where search queries returned empty when two or more Search widgets were linked to the same Post widget on the same page.
- New: Added a Display Format control to the Term Meta dynamic tag, allowing terms to be shown inline, as an unordered list (ul), or as an ordered list (ol).
- New: Added a style control for select fields inside the Filter widget.
- New: Added a style control for customizing the Select2 background inside the Filter widget.
- Tweak: Checked and confirmed full compatibility with WordPress 6.9.
1.7.1 – 2025-10-29
- Fix: Added "Include Loop Grid Query ID" switch under the Query section to prevent potential query ID conflicts.
- The automatic inclusion of the Loop/Post Widget Query ID is now disabled by default for backward compatibility.
- UI/Tweak: Reorganized Filter widget UI for clarity and better grouping of query-related controls.
- Tweak: Added
$with_css = trueparameter to the Template Grid option in the Post Widget.
1.7.0 – 2025-10-24
- New: Added "Include Loop Grid Query ID" switch under the Query section to prevent potential query ID conflicts
- Relational fields were also added to the Default Filter section, allowing pre-filtering of results based on related users or posts.
- New: Added quick deselect pill support for numeric ranges.
- New: Added URL-based filter triggering.
- Filters can now be triggered using ?results=filter-XXXXXXX (replace XXXXXXX with the Filter ID).
- After interacting with the widget, the URL scheme will be automatically revealed for sharing or linking.
- New: Filter query results now detect Elementor Pro and BPFWE Post Widget
query_id, ensuring filter results do not override the Loop Grid's own query. - New/Dev: Added a developer filter for extending relational meta-based terms:
bpfwe/get_relational_terms/{query_id}
- Fix: Prevented a potential HTTP 500 error when using a single template directly on a static page instead of assigning the template to the page itself.
For full changelog, see Changelog.
Upgrade Notice
1.8.3
This update includes stability improvements.
# Crafted For Seamless Elementor Integration:
- Blends seamlessly with Elementor's native interface.
- No disruptive branding — Enjoy a clean, streamlined interface without unnecessary distractions.
- Lightweight design, utilizing Elementor's resources to minimize external dependencies.
# Create Loop Grids For Free:
Create dynamic loop grids without Elementor Pro. Design fully custom layouts using any Elementor widget and dynamic tag, while keeping full compatibility with filtering and AJAX pagination.
# Developer-Friendly:
Tailor the widgets to your needs using dedicated filters and developer hooks.
Troubleshooting
- Make sure the Post Widget class name and the Filter Widget target match.
- Check for incompatible plugins or theme conflicts:
- Temporarily switch to a default WordPress theme.
- Deactivate all other plugins except Elementor and Better Post & Filter Widgets.
- Test the filter. If it works, reactivate your plugins one by one to find the one causing the conflict.
- Disable caching or optimization plugins while testing, as they can interfere with AJAX.
- Check the browser console for JavaScript errors (press F12 and look under the Console tab) and resolve any errors that appear.
# Exclusive Dynamic Tags:
- Exclusive Repeater Field Tag: Unlock the ability to directly output ACF repeater fields in the Elementor frontend, with the flexibility to wrap each part in different HTML tags.
- Includes a series of dynamic tags, allowing users to fully utilize template grids with the free version.
# Filter Widget Key Features:
- Compatible with Elementor Pro post widget, ACF, WooCommerce and most translation plugins.
- True faceted filtering with real-time option availability and dynamic result counts.
- Filter any post type.
- Customizable filter items list with easy re-ordering options.
- Filter anything using taxonomies, custom fields/ACF, relational and numeric fields.
- Keyword search support for custom field/ACF.
- Various filter types catered to diverse use-cases: checkboxes, radio buttons, label list, dropdown, numeric range, select2 (single & multiple select).
- Fine-tune the filter with the choice of relation (AND or OR) between terms and parents.
- User-friendly more/less and toggle options, ideal for managing extensive lists.
- Choose how filters are applied: Auto-submission or Submit button mode.
Filter Widget Demo – See the filter in action.
# Post Widget Key Features:
- Query multiple post types at once.
- Do more with less – display posts, users, and taxonomies using a single widget.
- Effortlessly switch between a dynamic carousel or grid layout at different breakpoints.
- Make the most of Swiper API with advanced features such as carousel synching, parallax effects, and more.
- Multiple layout options, including classic, on the side, banner, template grid (loop grid), and custom HTML.
- Possibility to create your own loop grid, with any dynamic tags and Elementor widgets.
- Flexible post content options: title, content, excerpt, custom field/ACF, taxonomy, HTML, post meta, read more, bookmark, edit options, product price, product rating, buy now, and product badge.
- Flexible query system with AJAX pagination.
- Customize widget content and style like native Elementor widgets.
- Feed-style layouts with taxonomy-based grouping, ideal for magazine or news-style content.
Post Slider/Carousel Demo – Check out the post widget possibilities.
Docs And Support
Find support for this plugin in the documentation.
Source Code
This plugin includes both compressed and uncompressed versions of CSS and JavaScript files and can be found under the /assets/ directory.


