Opuswerk Filter Landing Pages for WooCommerce

Description

Shoppers often search for something specific, such as “grey velvet sofas”. Your shop already
has that page: the Sofas category with the colour filter set to grey and the material filter
set to velvet. To a search engine, though, it is just a filter address. It carries the
category’s heading and the category’s text, and most SEO plugins give it a canonical that
points back to the plain category. It does not rank on its own.

This plugin turns the filter combinations you pick into real landing pages, at the address
the filter already produces. You keep your filters, and no new URL is created.

How it works

Open a category in your shop, set the filters and click “Make this a landing page” in the
toolbar, or paste the address under Products, Filter landing pages. Write a heading and an
intro text; a text below the products, a title and a description for search results are
optional. Publish. Whoever then opens that filter combination, through a link, a filter
click or a search result, sees your heading and text, and search engines see a page whose
canonical points to itself.

What it does

  • Gives each landing page its own H1, intro text, text below the products, title and meta
    description, and hides the category description on that page.
  • Prints a self-referencing canonical and index, follow on landing pages, through Yoast
    SEO or Rank Math, or on its own when no SEO plugin is active.
  • Leaves every other filter combination exactly as it was.
  • Recognises a combination in any form: values in any order, with or without the operator
    argument, from the classic filter widget or the Product Filters block. It stores one
    canonical form and uses it everywhere: in the canonical tag, the links and the robots.txt
    lines.
  • Refuses what cannot be a landing page and says why: price, rating, stock or search
    arguments, a second results page, a duplicate of an existing landing page, a combination
    without products. A combination with very few products gets a warning.
  • Lists the landing pages under Products, with category, filters and product count.
  • Adds a “Popular filters” block of links to the landing pages on their unfiltered category
    page, so that search engines find them.
  • Shows a robots.txt block to copy: filter addresses disallowed, and an Allow line for
    each landing page that matches its exact address. The plugin does not write robots.txt
    itself.
  • Makes the WooCommerce Product Filters block reload the page in categories that have
    landing pages, so that a shopper who filters into one sees its heading and text. In other
    categories the block keeps filtering without a reload.
  • Clears the cache of a changed landing page and its category in WP Rocket and LiteSpeed
    Cache. Other caches can listen to an action.
  • Works with page builders through the shortcode [opusflp_landing part="intro"], with the
    parts h1, intro, bottom and links.
  • Offers the WP-CLI commands wp opusflp list and wp opusflp check <url>.

Which shops it is for

Shops that filter with WooCommerce’s own filters: the “Filter Products by Attribute” widget,
the Product Filters block, and themes that reuse their addresses, such
as ?filter_color=grey. Landing pages are built on product categories and product
attributes. Filter plugins that write addresses of their own are not read in this version.

SEO plugins

Tested with Yoast SEO (free) and Rank Math. With either of them, the plugin hands its
canonical, title, description and robots values to the SEO plugin, so each tag appears
exactly once. Without an SEO plugin, the plugin prints them itself. When another SEO plugin
is active, for example SEOPress, All in One SEO or The SEO Framework, the plugin prints
nothing in the page head, to avoid a second canonical, and says so in one dismissible
notice. Headings, texts and links still work.

For shops in Germany, Austria and Switzerland

Filter pages (Filterseiten) and faceted navigation (Facettennavigation) are where a shop’s
most specific searches land, such as a colour or a material within a category. A complete
German translation is available, in the formal (Sie) and the informal (du) form. WordPress
loads it from translate.wordpress.org. Until the language pack is published there, German
shops see the English admin screens. The texts of the landing pages are yours, in any
language.

What it deliberately does not do

It does not phone home and does not require an account. It does not touch filter addresses
that are not landing pages: no noindex, no redirect, no new canonical. It does not write
robots.txt or an XML sitemap. Landing pages are built on product categories, not on brands,
tags or the shop page.

For developers

Read another filter address format with the opusflp_dialects filter, support an SEO plugin
with opusflp_seo_adapters, and a cache with opusflp_cache_adapters or the
action opusflp_purge_urls. Choose which landing page a request shows with opusflp_match,
change the canonical address with opusflp_canonical_url, and set the product count below
which a page counts as thin (default 3) with opusflp_thin_threshold. The
actions opusflp_landing_saved and opusflp_landing_deleted fire after a change. The full
list is in the plugin’s source.

Screenshots

Installation

  1. Install and activate the plugin. WooCommerce must be active.
  2. Open a product category in your shop, set one or more attribute filters and choose “Make this a landing page” in the toolbar.
  3. Write the heading and the intro text, then publish.
  4. Optional: copy the robots.txt block from WooCommerce, Settings, Products, Filter landing pages into your robots.txt.

FAQ

Which filters does it work with?

WooCommerce’s own: the “Filter Products by Attribute” widget, the Product Filters block, and
themes that write the same addresses (filter_<attribute> and query_type_<attribute>).
Filters by price, rating or stock cannot be part of a landing page, because their results
change with every price or stock update. Filter plugins with an address format of their own
are not supported in this version.

Does it create new URLs?

No. A landing page lives at the address the filter already produces, for example
/product-category/sofas/?filter_color=grey. There is nothing to redirect, and the address
keeps working when you deactivate the plugin, only without your heading and texts.

What happens to all the other filter combinations?

Nothing. They keep whatever your SEO plugin does with them today. To stop search engines
crawling them, copy the robots.txt block from the settings: it disallows filter addresses
and allows each landing page. A blocked address is no longer crawled, but one that search
engines already know may stay listed for a while, without its content.

Why an Allow line for each landing page?

A robots.txt that blocks ?filter_ addresses blocks your landing pages too. Google follows
the most specific matching rule, so a line with the landing page’s exact address, ending
in $, lets it crawl that one page and no variant of it. The plugin writes the line in the
same canonical form as the canonical tag and the links, so the three always match. Copy the
block again after you add or change a landing page.

Does it work with Yoast SEO?

Yes, tested with Yoast SEO (free). On a landing page, Yoast prints the canonical, title,
description and robots values the plugin hands it, in its Open Graph tags as well. The paid
Yoast WooCommerce SEO has not been tested.

Does it work with Rank Math?

Yes. On a landing page, Rank Math prints the plugin’s canonical, title, description and
robots values, in its Open Graph and Twitter tags as well.

I use another SEO plugin. What happens?

The plugin adds no canonical, title, description or robots tags, so nothing is doubled, and
a dismissible notice names the SEO plugin it found. Headings, texts, links and the
robots.txt lines work as usual. Keep in mind that most SEO plugins give filter addresses a
canonical to the category, which keeps a landing page out of search results.

Yoast SEO and Rank Math are both active. Is that a problem?

Each of them prints its own canonical, so a page gets two. Both point to the landing page
itself, but one SEO plugin per site is the clean setup.

My theme or page builder still shows the category heading.

The plugin changes the heading and the description through WooCommerce’s hooks and the
archive title functions that most themes use. For a page builder or a theme with a header of
its own, use the shortcode: [opusflp_landing part="h1"] returns the heading text for your
heading element, and intro, bottom and links print the texts and the links block. The
texts and the links block appear only once per page, even when a theme hook prints them too.

Why does the Product Filters block reload the page?

The block normally swaps only the product list. A shopper who filters into a landing page
would then see the category’s heading above its products. In categories that have landing
pages, the plugin switches the block to full page loads; elsewhere the block stays as it is.
Turn this off under WooCommerce, Settings, Products, Filter landing pages.

Do I need to clear my cache after editing a landing page?

Not with WP Rocket or LiteSpeed Cache: the plugin clears the landing page and its category
when you save, trash or delete it. Clear other caches yourself, or hook into the
action opusflp_purge_urls.

How many landing pages can I create?

As many as you like.

Does it send any data anywhere?

No. The plugin makes no external requests of its own. The only request it makes at all is
the one you ask for with wp opusflp check <url> --fetch, which loads that page from your
own site to read its head.

What is removed when I delete the plugin?

Its landing pages, its settings, its index of filter combinations and the notices you
dismissed. Products, categories and attributes are not touched. Lines you copied into
robots.txt stay there until you remove them.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Opuswerk Filter Landing Pages for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“Opuswerk Filter Landing Pages for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Opuswerk Filter Landing Pages for WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.1

  • Links to the support forum and to rate the plugin on the plugins screen; the settings section names the support forum for problems and bug reports, and once three landing pages are live asks for a review, hidden for good with one click.
  • Tested with WordPress 7.1.3 and WooCommerce 11.2.1.

1.0.0

  • First release.
  • Landing pages for WooCommerce filter combinations on product categories, with their own H1, intro text, text below the products, title and meta description.
  • Self-canonical and index, follow through Yoast SEO, Rank Math or on its own; nothing in the head when another SEO plugin is active.
  • “Popular filters” links on the category page, robots.txt lines to copy, full page loads for the Product Filters block where landing pages exist.
  • Cache clearing for WP Rocket and LiteSpeed Cache; the shortcode [opusflp_landing]; WP-CLI list and check.