FacetWP Mobile Flyout is an impressive plugin for WordPress that serves as an addon to the floating side panel of FacetWP. This plugin enhances the functionality of the FacetWP plugin by providing a mobile-friendly interface that allows users to access and interact with the search filters conveniently on mobile devices. With this plugin, website owners can ensure a seamless user experience for their mobile audience, enabling them to easily refine search results on the go.

Plugin Version: 0.8.4
 
WordPress plugin FacetWP Mobile Flyout

Plugin Features

The FacetWP Mobile Flyout plugin adds a sleek and intuitive flyout panel to the mobile version of WordPress websites that have FacetWP installed. This flyout panel elegantly displays the search filters, making them easily accessible to mobile users. By incorporating this plugin into their website, users can optimize their mobile browsing experience by providing a convenient and user-friendly interface for filtering search results.

One of the standout features of this plugin is its responsiveness, ensuring that the flyout panel adapts smoothly to different mobile screen sizes and orientations. This ensures that users can comfortably navigate and utilize the search filters, regardless of the device they are using. The plugin also enhances the overall mobile experience by allowing users to collapse or expand the flyout panel as desired, providing flexibility and saving valuable screen space.

With this plugin, website owners have the ability to customize the appearance and behavior of the flyout panel according to their preferences. Through the plugins settings, they can easily configure the position, animation, and other aspects to match the overall design and branding of their website. Additionally, the plugin offers options to control the display of filter counts, offer clear buttons to reset filters, and even enable autocomplete functionality for enhanced user convenience.

Implementing this plugin is a breeze, as it seamlessly integrates with the existing FacetWP plugin setup. Website owners can simply install and activate the plugin, and the flyout panel will be automatically added to the mobile version of their website. This ensures a hassle-free setup process, allowing users to quickly provide their mobile audience with an improved search filtering experience.

In conclusion, FacetWP Mobile Flyout is an invaluable addon for website owners using the FacetWP plugin in their WordPress websites. This plugin takes the mobile user experience to the next level by adding a sleek and responsive flyout panel that allows users to effortlessly refine search results on their mobile devices. With its customization options and seamless integration, this plugin truly enhances the functionality and usability of the FacetWP plugin for mobile users.

Specifications:

Release date: 11-10-2021
Last updated: 27-02-2026
Type: Paid
License: GPL 
Subject: Mobile for FacetWP
Compatibility: W5.x W6.x
Includes: Plugin
Language packs: English
Developer: FacetWP

Rating:
4.5047619047619 1 1 1 1 1 (210 Votes)

Download by subscription!

You need to log in on the site and purchase a club subscription!

Share with your friends!

 

FacetWP Mobile Flyout: a mobile filter panel for your WordPress catalog

FacetWP Mobile Flyout is not meant to re-explain what FacetWP is. It solves a specific problem instead: on desktop, catalog filters work well in a sidebar, but on a phone that same column often takes over the first screen, pushes products down, and gets in the way of reaching the results quickly. The add-on adds a slide-out filter panel that the user opens with a separate button. Inside the panel, the same facet filters remain in place, so the logic for narrowing down products, posts, real estate listings, job openings, or other content does not change.

FacetWP Mobile Flyout in a mobile WordPress catalog
Overview: the Filters button opens a slide-out panel, while the results list remains the main part of the mobile page.

This guide focuses on practical setup: where to place the button, which facet filters should appear in the flyout, how to avoid breaking the desktop version, how to add selected filters and an Apply button, what to check after launch, and how to diagnose cases where the panel opens but shows the wrong set of elements. This article is written for a product page, so from here on you will get less marketing recap and more working solutions for a site owner, front-end developer, or WordPress administrator.

The core idea is simple: FacetWP Mobile Flyout does not replace FacetWP and does not create a separate mobile search system. It works on top of an existing page that already includes a listing template and facet elements. By default, the flyout picks up the facet filters already present in the page HTML, shows them in the same order, and opens them in a separate panel. That leads to one important rule: if a filter is removed from the markup, hidden by a server-side condition, or rendered only after a late-stage load, the flyout may not see it.

Before you download and install it, think of this add-on as a mobile UX layer. It is especially useful where users have several decision criteria: category, brand, price, rating, city, search radius, property type, availability, color, size, or custom fields. If the page only has one simple dropdown, a separate slide-out panel may be unnecessary. But when there are many filters and they take up more than half of the mobile screen, Mobile Flyout usually makes the page much easier to use.

When a slide-out panel actually makes sense

The best use case for FacetWP Mobile Flyout is a catalog where the user looks at the results first and then refines the selection. In an online store, that may mean filtering products by price, WooCommerce attributes, and availability. In a real estate catalog, it may be filtering by neighborhood, property type, number of bedrooms, and price range. In a specialist directory, it could be specialty, city, rating, and appointment format. In all of these cases, a mobile user does not want to scroll through a long filter column before every pass through the listing cards.

On desktop, a sidebar with facet filters feels natural: controls on the left, results on the right, everything visible at once. On a narrow screen, that layout turns into a vertical feed. If you keep the filters at the top, the user may have to pass through a long block of settings every time. If you place them below the results, they become harder to find. Flyout solves this with a practical compromise: the page keeps a compact button, and all parameters open only when the user deliberately wants to refine the results.

Mobile Flyout should not hide the meaning of the page. It is helpful to keep a little context next to the button, such as the number of matching products, active selected values, or the sort order. That way, the user understands that filters exist but does not experience them as a barrier. If the page uses User Selections, you can show them inside the panel or next to the results so the user can see active constraints and clear them quickly.

There are also cases where this add-on may not be the best first step. If the mobile page already has a very short set of filters, such as just a keyword search and a single category, a slide-out panel adds an unnecessary action. If the site is built on a custom SPA interface with its own state logic, first check how FacetWP sees the markup and events. If the page does not have a stable listing template and the results are being changed by an external script outside FacetWP, Mobile Flyout will not fix the underlying architecture problem.

What to check before installing the add-on

Before installation, verify the core FacetWP page without the mobile layer. Filters should update results correctly, the URL should reflect the selected parameters, and the listing template should refresh without browser console errors. If standard filtering is already unstable, the flyout will only make the issue more obvious: the user will open the panel, choose values, close it, and still see the wrong results. So the first step is to clean up the main FacetWP, data source, and output template integration.

The second point is the actual presence of facet elements in the page HTML. The official documentation makes it clear that the flyout detects filters that are already on the page. You can hide them at mobile widths with CSS, but you cannot simply choose not to render them. That distinction matters: display: none leaves the element in the DOM, while conditional PHP that does not print the filter at all on the mobile version removes the source data the flyout depends on. So do not move mobile optimization into server-side conditions until you have confirmed that the add-on can see the required facet names.

The third point is themes and page builders. Elementor, Beaver Builder, block themes, and custom templates can place containers, sticky blocks, off-canvas panels, and repeated widgets in very different ways. For Mobile Flyout, it is critical that the same facet not be duplicated in multiple locations. Pay extra attention to pages where the desktop sidebar is sticky, cloned for a mobile menu, or rendered through a reusable section. Duplicates are not always visually obvious, but they can create two copies of the filter in the DOM.

The fourth point is the list of facet types. By default, the flyout does not include certain utility elements, such as pager, map, and User Selections. That is normal behavior, not a bug. If selected values need to appear inside the panel, add them through the flyout template. If you need a reset facet, it is not always enough to simply include it in the regular facets array, because a reset element does not behave like a standard object in FWP.facets. It is better to account for those details while designing the interface than to discover them only after launch.

Installation and first launch

FacetWP Mobile Flyout is installed as a separate add-on for the core FacetWP system. You download it from your FacetWP account, install it like a standard WordPress plugin, and activate it in the admin area. The add-on may not have a large standalone settings page. The real work starts in the page template, where you need to add a button or link with the CSS class facetwp-flyout-open. That class is the trigger that opens the panel.

You can add the most basic version of the button to a catalog template, an HTML block, a builder widget, or a theme file. The key is to place it where a mobile user expects filter controls: above the results list, next to sorting, or near the counter of matching items. If the button ends up in the footer or after a long product list, it loses its purpose. On desktop, it is usually hidden with CSS so it does not add an unnecessary element next to the regular sidebar.

FacetWP Mobile Flyout open button and mobile breakpoint
The open button should be visible at mobile width, while the regular facet blocks can remain in the markup and be hidden only visually.

A simple button example looks like this:

<button class="facetwp-flyout-open" type="button">Show Filters</button>

If you need a link, it is better not to make it a normal navigation link. Use a link as an interactive element only where that matches your accessibility and navigation pattern. For most catalogs, a button is clearer because it triggers an action on the current page rather than taking the user to a different URL. The text can be changed to "Filters," "Refine," "Narrow Results," or another short option, but it should be understandable without extra explanation.

After adding the button, open the page at phone width or in your browser's responsive mode. Clicking it should open a panel with filters. If the panel opens empty, check whether facets are present on the page before opening it. If the panel does not open at all, check the button class, confirm the add-on is active, look for JavaScript errors, and verify that the page actually contains FacetWP. At this stage, do not jump straight into complex snippets. First confirm the minimal working path.

How to hide desktop filters without removing them from the page

The most common architectural mistake during mobile adaptation is removing the filter blocks from the mobile markup. A developer sees that the sidebar is unnecessary on a phone and hides it with a theme condition, a mobile-only template, or a builder setting that does not merely hide the block but stops rendering it entirely. For FacetWP Mobile Flyout, that is a problem: the add-on must find the original facet elements so it can copy them into the panel. The correct approach is to keep the facets in the DOM and hide them at the required width with CSS.

The basic logic is usually this: show the open button at mobile width and hide the regular desktop filter container. On desktop, do the opposite: the button is unnecessary, while the filter sidebar stays visible. Choose the breakpoint based on the site design, not on an abstract number. If the sidebar starts breaking the layout on a tablet, hide it at that width. If the two-column grid works well until a narrower width, you can keep the desktop mode longer.

Example CSS for the button:

@media (min-width: 780px) {
  .facetwp-flyout-open {
    display: none;
  }
}

Example CSS for hiding the regular facet blocks at mobile width:

@media (max-width: 779px) {
  :not(.flyout-item) > .facetwp-facet,
  .facetwp-selections {
    display: none;
  }
}

That approach highlights an important detail: the selector excludes elements inside the flyout so you do not end up hiding filters inside the panel itself. If your template has a dedicated wrapper for the sidebar, it is sometimes easier to hide the entire container, such as .catalog-sidebar, instead of hiding each facet individually. But even in that case, the container still needs to remain in the original markup. After adding the CSS, make sure to test two widths: mobile, where the button is visible and the sidebar is hidden, and desktop, where the sidebar is visible and the button stays out of the way.

Do not use visibility: hidden instead of display: none without a reason. The element becomes invisible, but it may still take up space in the page flow. Do not rely on negative margins or absolute positioning as your main hiding technique either. Those hacks make accessibility harder and can create horizontal scrolling. For a standard catalog, a clear media query and a careful exception for .flyout-item are enough.

Which filters appear inside the panel

By default, Mobile Flyout shows the facet filters that are already on the page, in the same order they appear there. That makes initial setup fast: if the sidebar order is "Category," "Price," "Brand," "Rating," then the mobile panel will follow the same order. But that is not always ideal UX. On a phone, it is often better to move the strongest filters higher up, remove secondary parameters, and show active selected values separately.

For example, in a product catalog, "Category" may come first, then "Price," then "Availability," while brand and color can sit lower down. In an events catalog, it is more logical to start with city or date. In a specialist directory, specialty and appointment format may come first. A desktop order may work well for a wide sidebar, but the mobile order should answer a different question: which parameter does the user most often change first when the screen is narrow and attention is limited?

FacetWP Mobile Flyout with a panel template and selected filters
The flyout template lets you add utility content around the automatically inserted facet filters, but the facets themselves do not need to be inserted there manually.

If you need to limit the set of filters or change their order, use the JavaScript hook facetwp/flyout/facets, which you can add through facetwp_scripts in the theme, child theme, plugin snippets, or another safe project mechanism. The array should contain the facet names in the required sequence. The practical reason to check this carefully is simple: only elements that actually exist on the current page should go into the panel. If a name is wrong or that facet is not present, the panel may behave unpredictably.

add_action( 'facetwp_scripts', function() {
  ?>
  <script>
    (function($) {
      $(function() {
        if ('object' != typeof FWP) return;

        FWP.hooks.addFilter('facetwp/flyout/facets', function(facets) {
          let mobile_facets = ['categories', 'price', 'brand', 'availability'];
          mobile_facets = mobile_facets.filter(function(facetName) {
            return facetName in FWP.facets;
          });
          return mobile_facets;
        });
      });
    })(fUtil);
  </script>
  <?php
}, 100 );

This example intentionally filters the array through FWP.facets. That reduces the risk that one catalog page will inherit a hook meant for another page and try to output a facet that does not exist there. On sites with multiple catalogs, it is better to wrap the snippet in a WordPress condition: a specific page, template, post type, or another reliable rule. If different pages use different filters, one shared array will become a source of inconsistent errors.

Do not try to add regular facets into the panel through the flyout HTML template. The official approach for extra HTML uses the {content} placeholder, while the facets themselves are chosen through the hook. The template is the right place for text, a selected-values block, a submit or Apply button, or other support content, but not for a new set of facet shortcodes that bypass the add-on mechanism. Otherwise, the page may end up with duplicated elements and JavaScript conflicts.

Flyout template: what to add around the filters

Mobile Flyout includes a special template block with the class facetwp-flyout-tpl. It is automatically hidden and used to build the contents of the panel. Inside that block, you should keep the {content} placeholder: at that point, the add-on inserts the selected facet filters. Everything placed above or below the placeholder becomes additional panel content. That works well for a brief hint, a User Selections block, an Apply button, or a reset link.

The simplest example:

<div class="facetwp-flyout-tpl">
  <p>Choose your filters and view the updated list.</p>
  {content}
</div>

If it matters to show active filters inside the panel, you can place User Selections before the main content. That is especially useful when the user opens the flyout after following a link with preselected parameters or after refining the results several times. They immediately see what is limiting the results and can remove anything unnecessary. User Selections belongs to the group of elements that are not output in the flyout by default as a regular facet, so the template is the right place for it.

<div class="facetwp-flyout-tpl">
  [facetwp selections="true"]
  {content}
</div>

If you use a mode where the user selects several parameters and then clicks Apply, the button can be placed after {content}. That pattern makes sense in heavy catalogs, where each change immediately refreshes the query and can feel unpleasant on a slow mobile connection. But consistency matters here: if auto-refresh is disabled for FacetWP, the desktop version should also have a clear Apply button. You should not create a mobile panel with Apply logic while leaving desktop users wondering why the results are not changing.

Do not turn the flyout template into a mini page. The more text, banners, hints, and decorative blocks you place inside the panel, the less room remains for the filters themselves. A good flyout supports one scenario: quickly choose parameters and get back to the results. If you need to explain complex filtering behavior, it is better to add a short note next to a specific facet or create a separate help section below the catalog rather than loading the mobile panel with documentation.

Facet filter headings and panel readability

Mobile Flyout automatically adds a heading for each facet based on its label. That helps because the user sees clear groups rather than just a plain list of checkboxes: category, price, brand, city, availability. If the labels in FacetWP are filled out carelessly, the mobile panel will expose that very quickly. So before launch, it is worth reviewing the names: remove internal technical wording, keep the style consistent, and make the labels reasonably short.

Sometimes a heading should be hidden. For example, if a facet already has an obvious UI of its own and the extra heading only repeats the same text. You can hide all headings with CSS:

.flyout-row h3 {
  display: none;
}

For a specific facet, it is better to target the row class associated with that facet name. That approach leaves the other labels in place and preserves the readability of the full panel. Be careful about removing headings altogether: on desktop, visual grouping may come from the layout itself, but in a flyout the user sees a sequence of blocks in a narrow column. Without labels, filters become harder to understand, especially when several blocks contain similar choices.

For long lists, it is often better not to hide the heading but to make groups collapsible. The official documentation shows a pattern where the heading acts as an accordion toggle. That technique works well for catalogs with a large number of facets: the user first sees the group names, then expands the one they need. But accordions should be tested with real content. If most people always change the same two or three filters, those groups are better left open or moved higher, while secondary groups can sit lower down.

Do not change the heading structure just for visual preference. If the main page content already has its own heading hierarchy, adding extra h2 tags inside the slide-out panel can weaken the semantics. If you need to change the heading tag, do it deliberately and check the final page structure. For most projects, styling the existing h3 elements is enough instead of replacing them with other tags.

Practical scenario: a mobile product catalog

Imagine a WooCommerce catalog page powered by FacetWP: on desktop, the left side contains category, price, brand, availability, and rating, while the right side shows product cards. On a phone, that desktop column becomes too long. The goal of Mobile Flyout is to keep a compact "Filters" button above the cards, open a panel with the key parameters, and then return the user to the list after selection, where the results are already updated.

FacetWP Mobile Flyout in a WordPress product filtering scenario
In the real workflow, the user opens the filters, chooses parameters, and immediately checks the updated catalog results.

First, make sure desktop filtering works without Mobile Flyout. Choose a category, change the price, enable availability, and confirm that the product cards update and the URL receives the expected FacetWP parameters. Then add the open button above the listing template and hide the regular sidebar at mobile width. After that, open the page on a phone or in an emulator, click the button, and compare the filter order with the desktop sidebar.

If that order is not a good fit for mobile, define a separate order through the hook. In a store, price often belongs above brand if price is the main purchasing constraint. In a clothing catalog, size and category may matter more than price. Do not copy the desktop structure automatically: in a mobile panel, every extra block adds more scrolling, and the user does not see the results next to the filters.

After choosing several parameters, check three states: panel open, panel closed, and page reloaded from a URL that already includes selected parameters. In the first state, the user should understand which values are selected. In the second, they should see the changed results and ideally active selections next to them. In the third, the site should rebuild the filters from the URL, and the flyout button should open the panel with the current state. If those states do not match, the problem usually lies not in the design but in the overall FacetWP integration on the page.

For a heavy catalog, you can add an Apply button. That lets the user pick several filters in the panel and refresh the results with a single action. It reduces the number of requests, but it also makes the interface feel less immediate. If you use that mode, make the button text explicit and implement the same behavior on desktop. If auto-refresh is enabled, do not add an unnecessary "Apply" button without a reason. It may create the expectation that the selection does not work until the button is clicked.

Opening, closing, and behavior after selection

Mobile Flyout provides JavaScript functions for opening and closing the panel: FWP.flyout.open() and FWP.flyout.close(). These are useful not for the basic setup but for fine-tuning behavior. For example, you may want to open the panel on the first visit when the URL already contains active facet parameters, or close it after a value is selected. But any automatic behavior should be tested with real users: what feels convenient on one page may feel annoying on another.

Automatically closing the panel after every selection works well for simple filters: the user picks one value, the panel closes, and they immediately see the updated list. But if users typically choose several parameters in a row, that behavior forces them to reopen the flyout again and again. On those pages, it is better to close the panel after clicking an Apply button or leave closing entirely manual. The right choice depends on panel length, refresh speed, and the most common user flow.

If you need to close the panel after a refresh event, use FacetWP events deliberately. facetwp-refresh fires earlier, when the update starts, while facetwp-loaded fires later, after the results are already loaded. The first option feels faster, while the second lets you close the panel after the update finishes. If the results list sits below the panel and updates with noticeable delay, it is sometimes better to wait for the loaded event so the user does not see an in-between state.

An example of an Apply button inside the flyout template could look like this:

<div class="facetwp-flyout-tpl">
  {content}
  <button type="button" onclick="FWP.refresh()">Apply</button>
</div>

Code with inline onclick is simple, but on a project with strict security rules or CSP, it is better to move the handler into a connected JavaScript file. In any case, do not drop snippets blindly into production. Test them on a staging copy first, make sure there are no console errors, and keep a rollback path. For smaller sites, a child theme or code snippets plugin may be enough. For team development, it is better to store the change in the theme repository or a custom mu-plugin.

Localizing the button and labels

If the site is monolingual, you can set the button text directly in the HTML. For a multilingual site, it is better to output the button through PHP and wrap the string in the WordPress or FacetWP translation mechanism. The official documentation shows an approach using facetwp_i18n so the string is included in translatable items. That matters especially if the site uses WPML, Polylang, or a similar system and one template needs to work across several language versions.

An example idea for PHP output:

echo '<button class="facetwp-flyout-open" type="button">' .
  facetwp_i18n( __( 'Show filters', 'fwp-front' ) ) .
  '</button>';

On a Russian-language site, the string might be translated as "Show Filters" or simply "Filters." The shorter option fits a compact toolbar better, but the longer one is clearer when there is no icon nearby. It is best not to use wording like "Settings" if the button specifically controls catalog filters, because the user may interpret it as site or account settings. If the button is placed next to sorting and the results counter, "Filters" is usually clear enough.

Localization affects more than just the button. Facet labels, User Selections, the Apply button text, the hint in the template, and any "Reset" link should sound like one consistent interface. Do not mix English labels such as "Price" and "Availability" with Russian hints unless that is an intentional part of the site. In FacetWP, labels are used as headings inside the flyout, so low-quality translation ends up directly inside the mobile panel.

Compatibility with Elementor, Beaver Builder, and block templates

FacetWP Mobile Flyout can be used with different page-building approaches, but builders add their own layers. In Elementor, if you have the FacetWP add-on available, you can place the flyout button through the FacetWP Button widget and choose the appropriate type. In Beaver Builder, a similar approach is available through a module. That is more convenient than manually inserting HTML if the site is already built in a visual builder and the editor wants to manage the button visually.

But a visual builder does not cancel the core rules. Facets must exist on the page, not just inside a hidden template that the builder loads on click. Sticky sections and duplicated responsive widgets need especially careful review. The official documentation specifically calls out duplicate facets in combination with Elementor Pro sticky widgets: if a facet widget is made sticky and then cloned, the flyout may receive extra copies. In practice, that shows up as repeated filters or strange behavior after selection.

With block themes and Full Site Editing, a different issue appears more often: the editor may place the facet block inside a reusable pattern or template part that is used across multiple pages. If that filter set works for one page but not another, Mobile Flyout will simply repeat what it finds in the DOM. So for different catalogs, it is usually better to separate templates or define conditional ordering through a hook. Do not expect the flyout to understand business context on its own: it works with specific facet names and the current page.

After making changes in the builder, be sure to clear the builder cache, the WordPress cache, and any front-end cache in use. Sometimes a problem looks like a Mobile Flyout error when the browser is really just loading an outdated CSS or JS file. Test in a private window and on a real phone, because a builder's responsive preview does not always reproduce scroll behavior, overlays, fixed headers, and touch interaction the way a mobile browser does.

Speed, indexing, and result quality

Mobile Flyout controls the interaction pattern, but it does not speed up the query itself and does not fix the FacetWP index. If results arrive slowly after a filter is selected, look at the data sources, index size, query template, caching, and facet types. On a mobile connection, delays are more noticeable: the user taps a value in the panel, closes it, and waits for the cards to update. That is why flyout UX is closely tied to the performance of the core filtering logic.

Start by checking the indexer. If a facet shows empty or incomplete options, the issue may not be the panel at all but rather data that was not re-indexed after products, taxonomies, or custom fields were changed. Verify that the source entries contain the values, that the facet source is selected correctly, and that the indexer has run. For WooCommerce, also review attributes, stock status, catalog visibility, and any custom fields used in filtering.

The second layer is the template query. FacetWP needs to work with the correct query. If the page contains multiple queries, similar loops, or custom blocks, the filters may be affecting the wrong list. On desktop, that can sometimes be masked because the user sees a lot of content at once. In a flyout workflow, the error becomes obvious: the user selects a filter in the panel, but the visible list does not change, or a different block changes instead.

The third layer is caching. Static page cache, object cache, JS optimizers, and deferred script loading can interfere with FacetWP. Do not disable everything at once in production. It is better to temporarily test the page without minification and defer for the relevant scripts, then add exclusions selectively. If the site uses Cloudflare, WP Rocket, server-side cache, or similar tools, document which rules affect the catalog page.

Safe improvements for a real project

The first improvement is making the panel predictable in width and position. The official documentation shows how to move the flyout to the right side with CSS. That can be useful if the button is placed on the right or if the site already uses right-side off-canvas panels. But only change the direction after testing: depending on the layout, sticky header, and thumb zone, the left and right positions may feel different to users.

The second improvement is an accordion for long filter sets. If the panel contains more than five large groups, users quickly lose orientation. Collapsible rows help keep the structure compact. At the same time, the first or most important facet can remain open, while secondary ones stay collapsed. Do not forget touch targets: the heading must be large enough to tap comfortably, and the expansion indicator should be easy to understand.

The third improvement is auto-opening when a user lands on the page through a link with active filters. That is useful if the home page sends visitors into a catalog with a category, city, or product type already selected. When the user arrives, the flyout can open and show which parameters are active. But do not overuse this pattern: if every external entry point opens the panel on top of the results, some users will experience it as an obstacle. It is better to use that condition only where the active facets genuinely need explanation.

The fourth improvement is a small state indicator next to the button. For example, you can show the number of active parameters next to "Filters." That is not a built-in Mobile Flyout responsibility, but it is a useful UX idea: the user can see that the results are already constrained. You can build that indicator with custom JS that reads the FacetWP state, but only after the basic setup is stable. First get a reliable panel, then add polish.

Troubleshooting: why the flyout is not behaving correctly

Troubleshooting FacetWP Mobile Flyout errors in WordPress
It is best to troubleshoot in layers: the button, facet presence in the DOM, ordering, the template, FacetWP events, cache, and page builder conflicts.

The panel opens, but there are no filters inside

First, check whether the regular facet blocks are present in the original page markup. Open the browser inspector and find the .facetwp-facet elements. If they are missing, Mobile Flyout has nothing to inject. Put the facets back on the page and hide them with CSS rather than a server-side condition. Then confirm that you are opening the actual page with the FacetWP listing template, not an archive or a block that looks like a catalog but is not connected to FacetWP.

Filters are duplicated

Duplicates usually appear because the same facet is rendered more than once in the template, because of sticky widgets, responsive sidebar copies, or reusable sections. Check the DOM, not just the visual result: a builder may hide one block visually but still leave it in the markup. If the duplicates are related to Elementor sticky behavior, disable sticky mode for the widgets that contain facets, or rebuild the template so the facet has only one source. Then clear the builder cache and front-end cache.

The button is visible on desktop or disappears on the phone

In almost every case, the breakpoint or CSS cascade is the cause. Check the media query for .facetwp-flyout-open, the order in which styles are loaded, and selector specificity. If the theme has its own class for hiding elements on mobile or desktop, it may override your CSS. Do not hide the button with the same rule that hides the facet blocks: the button should live separately from the filter container, otherwise it will disappear together with the sidebar.

Selecting a value does not change the results

Check the standard page without the flyout. If the facet does not work in the desktop sidebar either, the problem is not the add-on. Review the indexer, facet source, query template, and JavaScript errors. If the regular facet works but the flyout one does not, check for duplicates, custom snippets, and whether facets were inserted manually into facetwp-flyout-tpl. The template should contain the {content} placeholder, not a second set of shortcodes for the same filters.

The panel closes too early

If you added a snippet that closes it on facetwp-refresh, it may fire immediately after any click. That is inconvenient on pages where the user usually selects several parameters. Move the closing logic to an Apply button or to a later event if you need to wait for the results update. First disable the snippet temporarily and test the default behavior so you can separate a Mobile Flyout issue from your own customization.

Empty facets are taking up space

The behavior of empty facets depends on the settings of the specific facet and the ghost-value mechanism. If ghost options are enabled, the user may see options that currently return no results. In some interfaces that is useful, but in a mobile panel it often gets in the way. Check the facet settings, the Hide when empty behavior in relevant blocks, custom snippets, and how the panel behaves after filtering. If an empty facet remains visible, test the base page first and then the flyout.

Checking the result before publishing

After setup, do not stop after a single click on the button. Put together a short test plan and run it at desktop, tablet, and phone widths. On desktop, the open button is usually hidden, the filters are visible in their normal place, and the results update correctly. On a phone, the button should appear above the listing template or next to the catalog utility bar, regular filters should not consume the first screen, and the flyout should open without horizontal scrolling or overlap with the sticky header.

Check the state with a clean URL, the state with active filters, and the state after reloading the page. If selected parameters are written into the URL, the page should restore itself after reload. Open a parameterized link in a new private window. If the results are restored but the flyout shows an empty or outdated state, inspect the script initialization order. If the flyout is correct but the listing is wrong, inspect the query and the cache.

Check the accessibility of basic actions. The button should be a button, or it should behave like one. It should be easy to tap with a finger. Closing the panel should be obvious. If you replaced the close icon with custom text or changed the wrapper HTML, make sure the close element did not become too small or end up hidden beneath the header. For a keyboard test, tab to the button, open the panel, and make sure focus does not get lost in unexpected places.

Also test long labels, Russian words, price ranges, and multi-word values. An English demo may look neat, while a Russian localization can break a line with longer phrases such as "Available for preorder" or "Professional equipment." If values are long, adjust width, wrapping, and spacing. Do not shrink the text until it becomes unreadable: the mobile panel should be usable, not merely forced to fit at any cost.

The last step is checking the production layer. Re-enable cache, minification, and script optimization if the site uses them, then repeat the key actions. Staging often works fine without optimizers, while production breaks because of deferred JavaScript or stale CSS. If an error appears only after caching is turned back on, add exclusions selectively and document them. That will save time at the next theme or plugin-stack update.

Who FacetWP Mobile Flyout is a good fit for, and when another approach makes more sense

FacetWP Mobile Flyout is a strong fit for site owners who already use FacetWP and want to adapt filtering cleanly for mobile traffic without building a separate interface from scratch. The add-on is especially useful for catalogs with several important criteria, where the desktop sidebar is necessary but gets in the way on a phone. It is also helpful for teams that want to keep one facet logic across all devices instead of maintaining two different sets of filters.

Developers tend to appreciate the add-on because it does not require rewriting the entire catalog page. A button, CSS for the breakpoint, an optional template, and a few hooks cover most practical needs. At the same time, the tool stays flexible enough: you can change facet order, exclude extra elements, add selections, an Apply button, an accordion, and your own reactions to open and close events. In other words, it is not a black box but a thin layer on top of an existing FacetWP setup.

You should not expect Mobile Flyout to solve data-structure problems. If products are poorly structured, taxonomies are used inconsistently, custom fields are messy, and the FacetWP indexer builds incomplete values, the panel will simply expose those issues to the user. The same goes for a bad query template: if FacetWP is filtering the wrong loop, the mobile panel will not fix that binding. In those cases, clean up FacetWP first and only then enable the mobile UX layer.

A different approach makes sense if the site has a fully custom front end where filter state is managed by a React or Vue application and FacetWP is used only partially. In that case, the slide-out panel is usually better built within the same architecture as the rest of the interface. Mobile Flyout is designed for pages where FacetWP already owns the filtering and can see its own elements in the DOM. The further a project moves away from the standard WordPress and FWP cycle, the more carefully compatibility needs to be tested.

FacetWP Mobile Flyout FAQ

Can you use FacetWP Mobile Flyout without the core FacetWP plugin?

No. Mobile Flyout is an add-on for an existing FacetWP filtering setup. It does not create an independent search system and does not replace the indexer, facets, or listing template. A standard FacetWP page must work first, and only then should you add the mobile panel.

Why are pager, map, or User Selections missing from the flyout?

Some elements are not included in the panel as standard facets by default. Pager and map belong to special interface types, while User Selections should be added through the flyout template if they need to appear inside the panel. That is normal add-on behavior, not a sign that anything is broken.

Can I keep the filters only in the flyout and remove them from the mobile page?

Visually, yes, but technically they still need to remain in the page HTML. The correct approach is to render the regular facets, hide them at mobile width with CSS, and let Mobile Flyout use them for the panel. If the facets are not rendered at all on the mobile version, the add-on may not find any content.

How do I change the order of filters inside the panel?

Use the facetwp/flyout/facets hook and return the array of facet names in the order you want. On sites with multiple catalogs, wrap the snippet in a WordPress condition so one configuration does not get applied blindly to every page.

What should I do if the same filters repeat inside the panel?

Look for duplicates in the DOM. Common causes include responsive sidebar copies, sticky widgets, and reuse of the same builder pattern or section. Remove the duplicate output, disable sticky mode for the block that contains the facets, or split the page templates.

Can I add an "Apply" button?

Yes. Add it through the facetwp-flyout-tpl template after the {content} placeholder. But if you disable auto-refresh, think through the same behavior for both desktop and mobile. The user should clearly understand when results refresh automatically and when a button click is required.

How do I translate the text on the open button?

For a single-language site, it is enough to write the desired text directly in the HTML. For a multilingual site, it is better to output the button through PHP and use the WordPress translation system or facetwp_i18n so the string is available to WPML, Polylang, or another localization tool.

Should the flyout be shown on tablets?

That depends on the layout. If a two-column grid with a sidebar is still comfortable on a tablet, you can keep the button hidden. If the sidebar takes up too much space or starts breaking the product cards, switch to the mobile flyout at that width. Choose the breakpoint based on the real design, not a universal number.

Why do the results update slowly after I select a filter?

Mobile Flyout is not responsible for query speed. Check the FacetWP indexer, query template, data sources, caching, JavaScript optimization, and the weight of the listing template. If regular facets already refresh the results slowly, the flyout will feel the same or even more noticeable on a mobile connection.

Bottom line: is it worth downloading and testing?

FacetWP Mobile Flyout is worth testing if your site already uses FacetWP and the mobile version of the catalog suffers from a long block of filters. The add-on solves a clear UX problem: it keeps the results at the center of the page and moves the filters into a slide-out panel that opens only when needed. It does not require you to rebuild the entire filtering setup, but it does require careful markup, correct facet names, and testing at real mobile widths.

Before publishing, go through the full path from a basic button to production validation: install the add-on, add facetwp-flyout-open, hide the desktop filters with CSS, set the order, add selections or an Apply button only when there is a real need, then check for errors, duplicates, and cache issues. If that cycle is clean, Mobile Flyout becomes a strong addition to FacetWP for catalogs, stores, and directories with serious filtering needs.

If this is the kind of mobile layer you need on top of FacetWP, go to download FacetWP Mobile Flyout and test it on a staging copy of the catalog page first. That makes it easier to fine-tune the breakpoint, filter order, and panel behavior without risking the live results experience for visitors.

How to make mobile filtering behave predictably

After the basic FacetWP Mobile Flyout setup, it is worth running a separate validation not just to confirm that the panel opens, but to verify the entire behavior chain: the button is visible at the right screen width, the original facets remain in the page HTML, selected values are passed into FacetWP, the list of products or posts updates, and the user understands exactly what they applied. This step matters because a mobile flyout often breaks not because of the add-on itself, but because of the theme, the page builder, aggressive JavaScript optimization, or an attempt to remove the "desktop" facets from the markup entirely.

Start by checking the breakpoint. In the official setup, the open button gets the class facetwp-flyout-open, and visibility is controlled with CSS media queries. In practice, that means the user sees a normal filter sidebar on a wide screen and a compact button on a narrow screen. Do not tie the decision to one specific device: open the catalog page in your browser's developer tools and test several in-between widths. If you see a zone where the sidebar is already uncomfortable but the button is still hidden, adjust the breakpoint to match the actual theme layout.

Also check how the original facets are hidden. For Mobile Flyout, it is critical that the facets remain in the page HTML, otherwise the add-on JavaScript cannot detect them and move them into the panel. That is why it is safer to hide the visible filter area with CSS rather than remove it through conditional PHP output, builder settings, or lazy-loaded blocks. If the theme wraps the filters in its own container, it is usually easier to hide that whole container at mobile width, but before publishing, make sure the elements with FacetWP classes still remain in the original markup.

What to check before releasing the mobile filter panel
Area to check Expected behavior What to fix if it fails
Open button At mobile width, one clear filtering button is visible. Check the facetwp-flyout-open class, the CSS breakpoint, and whether a sticky header is covering it.
Panel contents The flyout contains the right facets in a logical order. Set the order through the facetwp/flyout/facets hook and do not add regular facets through the facetwp-flyout-tpl template.
Active values After a parameter is selected, the results list updates and the selected values remain intact. Check FacetWP indexing, cache, script optimization, and whether the facets exist in the HTML.
Panel closing The user can close the panel manually or after applying a filter, if that is the chosen behavior. Use the documented facetwp-refresh or facetwp-loaded events only after testing on the real page.

If the panel contains too many parameters, do not begin by aggressively removing facets. First identify which filters actually help users decide on a mobile screen: category, price, availability, rating, brand, region, date, or another primary criterion. Secondary parameters can stay in the desktop column, be excluded from the flyout, or be moved lower through output order. That approach works better than showing the full settings set in a narrow panel and forcing the visitor to scroll through a long list before getting back to the results.

Use the facetwp-flyout-tpl template carefully. It works well for explanatory text, a User Selections block, or an Apply button, but it is not meant for manually adding regular facets. If you add facets that way, you may get JavaScript errors and unstable result refreshes. Use the hook to change the filter set, and keep the template for supporting content: a short hint, selected parameters, an "Apply" button, or a reset link if that matches the logic of the specific catalog.

On commercial pages, it is worth separately testing the path of "filter - result - product card - back." The user opens FacetWP Mobile Flyout, chooses a parameter, reviews the updated list, opens a product or post, and then returns. If the filter state is lost after going back, check the FacetWP URL parameters, page caching, and the theme's Ajax navigation settings. For a catalog, this is not a minor detail: people often compare several options, and losing selected filters quickly turns a convenient mobile panel into a frustrating one.

In final testing, do not stop at the main catalog page. Go through pages with pagination, sorting, search, empty results, active selections, and multiple simultaneous facets. If the Submit Button add-on is used, make sure the Apply button is placed clearly and does not conflict with FacetWP auto-refresh. If the project uses Elementor or Beaver Builder, verify that the button was added specifically as a flyout button through the appropriate widget or module, not as a decorative button without the required class.

A good final setup looks simple: on a mobile screen, the visitor sees a short filter button, opens a clean panel, selects the needed parameters, gets an updated list, and returns to browsing without losing context. If that flow is stable, you can move on to the final polish and download the plugin through the FacetWP Mobile Flyout link on the product page.

By OceanTheme.org Editorial Team

 

You are not logged in to post comments.