If your theme or your custom code uses if ( get_query_var('paged') ) to check if you are on a paginated page with a page number higher than 1, you may run into confusing issues when using FacetWP on the page.

The reason for this is that FacetWP sets the paged query variable slightly different on page #1 than WordPress. The below table hightlights the difference:

WordPress FacetWP
On page: #1 #1
get_query_var('paged') 0 (int) 1 (int)
if (get_query_var('paged')) false true
On page: #2 #2
get_query_var('paged') 2 (int) 2 (int)
if (get_query_var('paged')) true true

In WordPress, we are on page #1 if the paged query variable is 0 (or not set). This results in if ( get_query_var('paged' ) returning false on page #1. However, FacetWP sets paged to 1 on page #1, resulting in if (get_query_var('paged')) returning true on page #1.

This difference can lead to unexpected results. For example, breadcrumb-generating code that adds “/ Page 1” on page #1, where your intention is to only add this to page numbers higher than 1.

You’ll mostly see this issue happening when loading a page with facet selections in the URL, or if you pre-select facets with the facetwp_preload_url_vars hook.

The way to fix this discrepancy is to not use:

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

if ( get_query_var('paged') ) { // your code }

but instead, to use the check like this:

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

if ( get_query_var('paged') > 1 ) { // your code }

See also

Last updated: December 16, 2024