Een klant die precies weet wat hij zoekt, wil filteren. Op maat, op kleur, op prijs, op merk. En zodra u dat aanzet, gebeurt er iets vervelends: de categoriepagina die eerst binnen een seconde stond, doet er nu vier over. Een productfilter in WooCommerce is namelijk de zwaarste vraag die uw shop aan de database stelt, en dat is precies waarom het zo vaak misgaat.
In dit artikel leest u waarom filteren zo duur is, welke keuzes u vooraf maakt en hoe u het snel houdt. Ook staat erbij wanneer u beter helemaal geen filters kunt aanbieden.
Waarom filteren zwaar is
Producteigenschappen staan in WooCommerce niet in de producttabel zelf. Ze staan in aparte tabellen die via koppelingen aan het product hangen. Filtert u op kleur, dan moet de database twee tabellen aan elkaar knopen. Filtert u op kleur én maat én merk, dan zijn dat drie koppelingen tegelijk, en die moeten allemaal waar zijn voor hetzelfde product.
Daar komt bij dat een goed filterpaneel ook telt: “Blauw (14)”. Om dat getal te tonen moet voor elke beschikbare waarde apart geteld worden hoeveel producten er overblijven, gegeven de filters die al aanstaan. Bij zes filtergroepen met elk tien waarden zijn dat zestig extra tellingen per paginaweergave.
Tot slot: filterresultaten komen nooit uit uw paginacache. Elke filtercombinatie is een uniek adres, en die combinaties zijn er vaak duizenden. Uw cacheplugin helpt hier dus niet.
De keuzes die u vooraf maakt bij een productfilter in WooCommerce
- Kies vier tot zes filters, niet meer. Kijk in uw statistieken welke filters mensen werkelijk aanklikken. In de praktijk gebruikt het overgrote deel van de bezoekers er hooguit twee. De rest is ballast die u wel elke keer moet berekenen.
- Gebruik eigenschappen met de status archief. Alleen die zijn efficiënt te doorzoeken. Losse velden of maatwerkvelden dwingen een filterplugin tot langzame omwegen.
- Vermijd het filteren op prijs met een schuifbalk als het niet hoeft. Prijs staat als tekstveld opgeslagen en een bereikvraag daarover is duur. Vaste prijsklassen als aanklikbare opties zijn veel lichter en voor klanten vaak duidelijker.
- Bepaal of u de aantallen wilt tonen. Die “(14)” achter elke waarde is prettig, maar hij verdubbelt vaak de rekentijd. Bij een grote catalogus is uitzetten een verdedigbare keuze.
- Beslis of filters een eigen adres krijgen. Handig om te delen, maar het levert eindeloos veel indexeerbare adressen op. Zet die pagina’s dan op niet indexeren, met uitzondering van een handvol combinaties waar u bewust op wilt scoren.
Wat de snelheid werkelijk redt
Vier maatregelen doen het meeste werk.
Objectcaching. Filterresultaten en tellingen worden in het geheugen bewaard, zodat de tweede bezoeker met dezelfde combinatie geen rekenwerk kost. Dit is bij filters de grootste enkele winst.
Een aparte zoekindex. Diensten en plugins die een eigen index opbouwen halen het filteren weg bij de WordPress-database. In plaats van drie tabelkoppelingen krijgt u één opzoeking in een index die daarvoor is gemaakt. Bij shops boven ongeveer drieduizend producten is dit meestal het omslagpunt.
Filteren zonder de pagina te herladen, maar wel met beleid. Een filter dat bij elk vinkje meteen een aanroep doet, stuurt bij vier vinkjes vier verzoeken. Een knop “toon resultaten” of een korte vertraging voordat het verzoek uitgaat scheelt driekwart van het verkeer. Waar dat verkeer in uw logbestand terechtkomt, leest u in het artikel over admin-ajax in uw logbestanden.
Minder producten per pagina. Achtenveertig producten tonen kost twee keer zoveel als vierentwintig. Combineer met doorbladeren of een knop “meer laden”.
Fouten die we vaak tegenkomen
- Twee filterplugins tegelijk actief. Vaak omdat er ooit een is geprobeerd en nooit verwijderd. Ze bouwen allebei hun panelen op, ook als er maar één zichtbaar is.
- Filters op elke pagina laden. Het filterpaneel hoort alleen op categoriepagina’s. Op de homepage en op blogartikelen laadt hij vaak onnodig mee.
- Lege filterwaarden tonen. Kleuren waar geen enkel product bij zit, leveren klanten een pagina zonder resultaten op. Zet de optie aan die lege waarden verbergt.
- Filters die niet meebewegen met de voorraad. Staat “op voorraad” niet als filter of als sortering, dan komt de klant uit bij artikelen die pas over zes weken leverbaar zijn.
- Geen goede weergave op mobiel. Een filterpaneel in een smalle kolom werkt niet op een telefoon. Een uitschuifbaar paneel met een duidelijke knop is de enige variant die in de praktijk gebruikt wordt.
Wanneer u geen filters nodig heeft
Het klinkt tegendraads, maar bij een kleine catalogus zijn filters vaak overbodig. Heeft u tachtig producten verdeeld over zes categorieën, dan is een klant met drie klikken bij het juiste artikel. Een filterpaneel voegt dan complexiteit, laadtijd en onderhoud toe zonder dat iemand het gebruikt.
Ook bij een assortiment waarin producten sterk verschillen, werkt filteren slecht. Filters gaan uit van vergelijkbare kenmerken over de hele catalogus. Verkoopt u zowel gereedschap als werkkleding, dan is een goede zoekfunctie nuttiger dan een filterpaneel dat per categorie iets anders betekent. Hoe u die zoekfunctie verbetert, staat in het artikel over de zoekfunctie in uw webshop.
Kijk voordat u iets bouwt in uw statistieken hoeveel bezoekers ooit op een filter klikken. Is dat onder de vijf procent, dan investeert u in het verkeerde onderdeel.
Meten of het werkt
Test na elke wijziging drie situaties, niet alleen de categoriepagina zonder filters. Meet de pagina met één filter actief, met drie filters actief, en met een combinatie die weinig resultaten oplevert. Die laatste is vaak het traagst, omdat de database veel werk doet voor weinig uitkomst.
Noteer de tijd tot het eerste antwoord van de server, niet de score van een testtool. Onder de achthonderd milliseconden bij drie actieve filters is een redelijk doel voor een middelgrote shop.
Loopt u vast, dan is het meestal geen kwestie van een andere plugin maar van de opzet van uw eigenschappen. Dat uitzoeken en herinrichten hoort bij het technisch bijhouden van een WooCommerce-shop; bij WebMaintor begint zo’n filtertraject altijd met de vraag welke filters klanten daadwerkelijk aanklikken.
Concrete volgende stap: zet drie filters aan op uw drukste categorie en meet de servertijd. Zit u boven de twee seconden, dan is objectcaching aanzetten uw eerste ingreep, en pas daarna kijkt u naar het aantal filters.



