In most cases, using FacetWP in combination with object caching is problematic.

We have seen some users using it successfully with FacetWP. But most often it interferes with FacetWP’s ability to detect or use the right query on refresh. This leads to a range of possible issues like post listings not refreshing or filtering, facets not loading, unexpected posts showing, pagination issues, wrong post and/or result counts, or the “FacetWP was unable to auto-detect the post listing” error. These issues may depend on the exact implementation of the object cache (by yourself or the hosting company), or the caching plugin used. We are investigating why it sometimes works and other times not, and whether there is a general solution or a fix for specific implementations or plugins. If there is any new information, we will update this page.

Depending on the implementation or plugin used, you may be able to exclude your facet URL/page, or its cache groups from being cached. The only other solution for now is to disable object caching entirely.

If you have implemented object caching successfully with FacetWP, or have found a fix for specific setups, please let us know so we can research the plugins/settings used.

Solutions for specific hosting providers

WP Engine

If you are hosting your site on WP Engine, you can turn off WP Engine’s object cache in the settings.

Pressable

We have seen users in our support with websites on Pressable hosting, where it appears to be impossible to disable its memcached object caching. The only solution we have found so far is the following code, which needs to be added to your (child) theme’s functions.php. The code flushes the cache on each page load of the facet page. Note that this clears the whole site cache, not just the facet page. This is not optimal, but the only thing that is currently known to work:

How to use custom PHP code?

PHP code can be added to your (child) theme's functions.php file. Alternatively, you can use the Custom Hooks add-on, or a code snippets plugin. More info

// Solution for Pressable hosting // Replace "the/uri" with the URI of the page: the part of the URL without the domain name and the query variables, without beginning and ending slashes. add_action( 'facetwp_init', function(){ if ( 'the/uri' == FWP()->helper->get_uri() ) { wp_cache_flush(); } });

See also

Last updated: October 28, 2024