HUSKY - WooCommerce Product Filter Professional

WooCommerce Schieberegler-Filter für Attribute und Meta-Felder

Größe, Leistung, Länge, Bildschirmdiagonale, Baujahr, Kilometerstand: Numerische Produktdaten verlangen nach einem Schieberegler statt nach einer langen Liste von Checkboxen. Ein WooCommerce-Schieberegler-Filter für Attribute ist in HUSKY schnell eingeschaltet, und genauso schnell landet man bei einem Schieberegler, der 100000 vor 9000 zeigt, 1,9 in zwei Werte zerlegt oder immer von 0 bis 100 läuft. Die Ursache ist fast immer dieselbe: Es gibt zwei verschiedene Schieberegler, und sie behandeln Zahlen unterschiedlich. Diese Anleitung erklärt beide, die Einrichtung von jedem und die Lösungen für falsche Reihenfolge, Dezimalzahlen und leere Bereiche.

Zwei Schieberegler: Attributwerte oder ein numerisches Meta-Feld

HUSKY kann einen Schieberegler aus zwei Arten von Daten zeichnen, und die Wahl entscheidet darüber, was der Schieberegler kann.

Schieberegler für Attribute (Taxonomie)Schieberegler für Meta-Felder
DatenBegriffe eines globalen Attributs oder einer anderen ProdukttaxonomieEine in den Produkt-Metadaten gespeicherte Zahl: _length, _weight, ein ACF-Zahlenfeld, ein beliebiges benutzerdefiniertes Feld
Was ein Bereich bedeutetAlle Begriffe zwischen den beiden Reglern, in der Reihenfolge, in der die Begriffe aufgelistet sindEin echter numerischer Vergleich: Wert zwischen von und bis
Positionen des ReglersEine Raststufe pro vorhandenem Begriff, gleichmäßig verteiltJeder Wert zwischen Minimum und Maximum, mit Ihrer Schrittweite
Minimum und MaximumErster und letzter BegriffVon Hand in der Option Bereich (Range) festgelegt
Zahlenfelder von/bisNeinJa, Eingabefelder anzeigen (Show inputs)
Textskalen (Weich, Mittel, Hart)JaNein, nur Zahlen
Variable ProdukteGefunden über die Attributbegriffe des ProduktsDurchsucht werden nur die eigenen Metadaten des Produkts, nicht seine Variationen

Der entscheidende Unterschied: Attributbegriffe sind Text. WordPress speichert 9000 und 100000 als Namen, nicht als Zahlen; der Attribut-Schieberegler kann also nur an einer Liste von Begriffen in einer vorgegebenen Reihenfolge entlanglaufen. Er rechnet nie. Der Meta-Feld-Schieberegler vergleicht Zahlen in der Datenbank und verarbeitet deshalb jeden Wert in einem Bereich, auch Werte, die kein anderes Produkt hat.

Individuelle Produktattribute, die direkt im Tab „Attribute“ eines Produkts ohne globales Attribut dahinter eingegeben werden, sind keine Taxonomien, und kein Filtertyp kann sie verwenden. Legen Sie zuerst unter Produkte → Attribute ein globales Attribut an (siehe Produkttaxonomien verwalten in der WooCommerce-Dokumentation).

Einen Schieberegler-Filter für Attribute einrichten

  1. Legen Sie das globale Attribut an, zum Beispiel Leistung (Power), und fügen Sie seine Werte als Begriffe hinzu: 5, 7.5, 10, 15. Weisen Sie sie den Produkten wie gewohnt zu.
  2. Öffnen Sie WooCommerce → Einstellungen → Products Filter → Struktur und stellen Sie den Typ dieses Attributs auf Schieberegler (Slider). Die Schieberegler-Erweiterung fügt diesen Typ hinzu.
  3. Klicken Sie neben dem Attribut auf die Schaltfläche Zusatzoptionen (additional options) (Zahnrad) und legen Sie die Optionen des Schiebereglers fest:
    • Typ (Type): double für einen Bereich von–bis; single für einen Regler, der alles vom ersten Wert bis zum Regler auswählt („bis 10 kW“).
    • Rasterschritt (Grid step): welche Beschriftungen unter dem Schieberegler sichtbar sind. 1 zeigt alle, 2 jede zweite, -1 blendet die Beschriftungen zwischen den Enden aus. Nützlich, wenn sich lange Werte überlappen.
    • Dynamische Nachzählung aktivieren (Enable dynamic recount): entfernt Werte ohne Produkte aus den aktuellen Ergebnissen (siehe unten).
    • Slider-Design (Slider skin): das Design dieses Schiebereglers.
  4. Lassen Sie Logik der Filterung (Logic of filtering) auf ODER (OR). Der Schieberegler sendet jeden Begriff der gewählten Strecke, zum Beispiel pa_power=5,7-5,10, und ein Produkt braucht nur einen davon. Bei UND (AND) müsste ein Produkt alle haben, und es würde nichts gefunden.

Da ein Bereich „die Begriffe zwischen den Reglern“ bedeutet, ist die Reihenfolge der Begriffe die gesamte Logik des Schiebereglers. Steht 6.5 in der Liste hinter 8.2, überspringt ein Bereich von 6 bis 7 diesen Wert. Der nächste Abschnitt behebt die Reihenfolge.

Werte des Attribut-Schiebereglers in falscher Reihenfolge

Typische Symptome: 100000 steht vor 9000, 10 und 11 stehen vor 2, negative Werte laufen -1, -2, -3, 0, 1, oder die Regler springen beim Ziehen hin und her. Alles davon ist Textsortierung. Die Lösung besteht darin, den Begriffen eine numerische Reihenfolge zu geben.

Am besten: WooCommerce das Attribut numerisch sortieren lassen

Gehen Sie zu Produkte → Attribute, bearbeiten Sie das Attribut und stellen Sie Standard-Sortierreihenfolge (Default sort order) auf Name (numerisch) (Name (numeric)). WooCommerce sortiert die Begriffe dann nach dem numerischen Wert ihrer Namen; das funktioniert für Dezimalzahlen mit Punkt, für negative Zahlen und für Namen, die mit einer Zahl beginnen, wie 10 cm. Lassen Sie in den Zusatzoptionen des Schiebereglers Begriffe sortieren (Sort terms) auf Standard (Default), damit HUSKY diese Reihenfolge beibehält. Ist Cache-Begriffe (Cache terms) eingeschaltet (Erweitert → Optionen), klicken Sie anschließend auf Begriffs-Cache löschen (clear terms cache).

Für eine Textskala wählen Sie stattdessen Benutzerdefinierte Sortierung (Custom ordering) und ziehen die Begriffe im Bildschirm Begriffe konfigurieren (Configure terms) des Attributs an die richtige Stelle: Weich, Mittel, Mittelhart, Hart. Dasselbe Drag-and-drop funktioniert für jede numerische Liste, deren Reihenfolge Sie von Hand steuern möchten.

Die eigenen Optionen von HUSKY zum Sortieren von Begriffen

Die Option Begriffe sortieren (Sort terms) in den Zusatzoptionen des Schiebereglers überschreibt die Standardreihenfolge:

  • Überschrift (Title) verwendet die natürliche Sortierung der Namen: korrekt für ganze positive Zahlen (2 vor 10) und für Namen wie 10 cm, aber nicht für Dezimalzahlen oder negative Zahlen.
  • Numerisch. (Numeric.) vergleicht den ganzzahligen Wert des Slugs des Begriffs. Das funktioniert nur für ganze positive Zahlen: Der Slug von 6.5 lautet 6-5 und zählt als 6, und WordPress entfernt beim Erstellen eines Slugs das führende Minus, sodass -3 als 3 sortiert wird.

Code: numerische Reihenfolge für jeden Taxonomie-Schieberegler

Für eine benutzerdefinierte Taxonomie, bei der Name (numerisch) (Name (numeric)) von WooCommerce nicht verfügbar ist, sortieren Sie die Werte des Schiebereglers im Code. Der Filter woof_sort_terms_before_out erhält die Begriffe jedes Filters und den Filtertyp:

/**
 * HUSKY: order the values of every taxonomy range slider by their number
 * (decimals with a dot and negative numbers included).
 * Child theme functions.php or a code snippets plugin.
 */
add_filter( 'woof_sort_terms_before_out', function ( $terms, $type ) {
    if ( 'slider' === $type && is_array( $terms ) ) {
        uasort( $terms, function ( $a, $b ) {
            return (float) $a['name'] <=> (float) $b['name'];
        } );
    }
    return $terms;
}, 20, 2 );

Begriffe ohne führende Zahl (eine Textskala) zählen hier alle als 0 und behalten ihre bestehende Reihenfolge; das Snippet stört solche Schieberegler also nicht.

Dezimalzahlen, Kommas und ungleichmäßige Schritte bei Attribut-Schiebereglern

  • Schreiben Sie Dezimalzahlen mit Punkt. Der Schieberegler erhält seine Beschriftungen als eine durch Kommas getrennte Liste; ein Begriff mit dem Namen 1,9 wird daher zu zwei Beschriftungen, 1 und 9, und jede Position danach zeigt auf den falschen Begriff. Benennen Sie solche Begriffe in 1.9 um. Das hat nichts mit der Einstellung für das Dezimaltrennzeichen des Shops zu tun: Begriffsnamen sind reiner Text.
  • Die Positionen sind pro Begriff gleichmäßig verteilt, nicht pro Wert. Die Begriffe 1, 2, 5 und 50 erhalten vier gleiche Schritte. Soll der Schieberegler proportional aussehen, fügen Sie die fehlenden Zwischenwerte als Begriffe hinzu.
  • Ein Schieberegler braucht mindestens zwei Werte. Bei nur zwei Begriffen können die Regler nur an den beiden Enden stehen. Bleiben nach der dynamischen Nachzählung weniger als zwei Werte übrig, wird der Schieberegler gar nicht angezeigt.
  • Nur vorhandene Begriffe sind wählbar. Ein Produkt mit dem Wert 6.5 wird nur gefunden, wenn der Begriff 6.5 existiert und zwischen den Reglern liegt.

Schieberegler für Meta-Felder: Abmessungen, Jahre und andere Zahlen

Ist der Wert eine echte Messgröße, ist ein Meta-Feld-Schieberegler meist das bessere Werkzeug: Er vergleicht Zahlen, akzeptiert Eingaben von/bis und bleibt auch bei Tausenden verschiedener Werte schnell. Die Einrichtung mit der Meta-Felder-Erweiterung:

  1. Öffnen Sie den Tab Metadaten (Meta Data) der Filtereinstellungen. Geben Sie den Schlüssel unter Fügen Sie den individuellen Schlüssel von Hand hinzu (Add Custom key by hands) ein oder nutzen Sie Schlüssel eines beliebigen Produkts anhand seiner ID abrufen (Get keys from any product by its ID), um zu sehen, welche Schlüssel ein Produkt hat.
  2. Stellen Sie den Typ des Feldes auf Zahl (number) und seine Ansicht auf Schieberegler (Slider). Für Text- oder Datumsfelder wird der Schieberegler nicht angeboten. Speichern Sie.
  3. Öffnen Sie die Zusatzoptionen des Feldes und tragen Sie Bereich (Range) als min^max ein, zum Beispiel 10^250. Legen Sie Schritt (Step) fest (0.5 funktioniert) und bei Bedarf Präfix (Prefix), Postfix (cm), Eingabefelder anzeigen (Show inputs) für Zahlenfelder von/bis und Tausendertrennzeichen verwenden (Use prettify) für ein Tausendertrennzeichen.
  4. Platzieren Sie das neue Filterelement im Tab „Struktur“ wie jedes andere.

Nützliche Schlüssel: WooCommerce speichert die Versandmaße und das Gewicht eines Produkts als _length, _width, _height und _weight. Ein ACF-Zahlenfeld wird unter seinem Feldnamen gespeichert. Details zu Meta-Schlüsseln finden Sie in der Dokumentation zu Metadaten.

Was Sie über Meta-Schieberegler wissen sollten:

  • Der Bereich wird nie berechnet. Der Schieberegler zeigt genau den eingegebenen Bereich (Range); ein leeres Feld fällt auf 0–100 zurück. Das echte Minimum und Maximum zu ermitteln würde bedeuten, bei jedem Seitenaufruf jedes Produkt zu lesen. Die dynamische Nachzählung bestimmt, welche Filter und Werte angezeigt werden, nicht wo ein Schieberegler beginnt und endet. Passen Sie den Bereich an, wenn neue Produkte darüber hinausgehen.
  • Speichern Sie reine Zahlen mit Punkt als Dezimaltrennzeichen und ohne Tausendertrennzeichen: 1250.5. Die Datenbank liest nur die Zahl am Anfang des Wertes, sodass 1,250.5 als 1 und 1250,5 als 1250 verglichen wird.
  • Jahre: ein Bereich wie 1990^2026, Schritt 1 und Tausendertrennzeichen verwenden (Use prettify) auf Nein (No), sonst wird 2026 als 2 026 angezeigt.
  • Variationen: Durchsucht werden die Metadaten des Produkts selbst. Existiert der Wert nur bei Variationen, speichern Sie ihn zusätzlich am übergeordneten Produkt oder verwenden Sie ein Attribut.

Dezimalwerte: woof_slider_meta_query_type

Standardmäßig vergleicht der Meta-Schieberegler Werte als NUMERIC, was MySQL als ganze Zahlen behandelt. Ein Produkt mit 10.11 wird dann im Bereich 1–10 gefunden, und 4.2, 4.4 und 4.6 zählen alle als 4. Um Dezimalzahlen zu vergleichen, ändern Sie den Typ mit dem Filter woof_slider_meta_query_type:

/**
 * HUSKY: compare these meta sliders as decimal numbers.
 * Child theme functions.php or a code snippets plugin.
 */
add_filter( 'woof_slider_meta_query_type', function ( $type, $meta_key ) {
    if ( in_array( $meta_key, array( '_length', '_width', '_height', 'screen_size' ), true ) ) {
        return 'DECIMAL(10,2)'; // up to 99999999.99
    }
    return $type;
}, 10, 2 );

Bei DECIMAL(M,D) ist M die Gesamtzahl der Ziffern und D die Zahl der Nachkommastellen. Wählen Sie sie passend zu Ihrem größten Wert: Mit DECIMAL(5,3) ist das Maximum 99.999, und jeder größere Wert wird als 99.999 behandelt.

Schieberegler ausblenden, die für die aktuelle Kategorie nicht zutreffen

  • Attribut-Schieberegler: Stellen Sie Dynamische Nachzählung aktivieren (Enable dynamic recount) in den Zusatzoptionen auf Ja (Yes). Werte ohne Produkte in der aktuellen Kategorie und Filterauswahl verschwinden, und bleiben weniger als zwei Werte übrig, wird der Schieberegler entfernt. Jeder Wert kostet eine zusätzliche Zählabfrage; achten Sie bei Attributen mit Hunderten von Begriffen daher auf die Seitengeschwindigkeit oder verwenden Sie einen Meta-Schieberegler.
  • Meta-Schieberegler: Ist Leere Begriffe ausblenden (Hide empty terms) im Tab „Optionen“ auf Ja (Yes) gestellt, wird ein Meta-Schieberegler nicht angezeigt, wenn in den aktuellen Ergebnissen keine Produkte in seinem Bereich liegen.

Ein Attribut-Schieberegler ohne Werte wird vom Skript des Plugins erst nach dem Laden der Seite entfernt, sein Titel kann also kurz aufblitzen. Dieses CSS blendet ihn von Anfang an aus (Design → Customizer → Zusätzliches CSS oder das Stylesheet Ihres Child-Themes):

/* HUSKY: hide empty taxonomy sliders before the script removes them */
.woof_container_slider:has(.woof_hide_slider) {
    display: none;
}

Wenn das Produkt selbst einen Bereich hat

Ein Schieberegler findet Produkte anhand eines Wertes pro Produkt. Deckt ein Produkt einen Bereich ab (geeignet für Körpergrößen von 150–190 cm, für 3–10 Spieler), gibt es keine integrierte Suche nach „sich überschneidenden Bereichen“. Zwei brauchbare Modelle:

  • Zwei Meta-Felder, zum Beispiel players_min und players_max, jedes mit eigenem Schieberegler. Wer ein Spiel für 4 Spieler sucht, stellt den ersten Schieberegler auf 1–4 und den zweiten auf 4–10.
  • Ein Attribut mit einem Begriff pro Wert (150, 151 ... 190), wobei dem Produkt alle passenden Begriffe zugewiesen werden und das Attribut als Schieberegler angezeigt wird. Weisen Sie die Begriffe per Massenbearbeitung zu, nicht von Hand.

Checkliste

  • Attribut-Schieberegler: globales Attribut, Dezimalzahlen mit Punkt geschrieben, Standard-Sortierreihenfolge (Default sort order) auf Name (numerisch) (Name (numeric)) gestellt oder Begriffe in Reihenfolge gezogen, Logik der Filterung (Logic of filtering) auf ODER (OR).
  • Meta-Schieberegler: Feldtyp Zahl (number), reine numerische Werte, Bereich (Range) als min^max ausgefüllt, ein Dezimaltyp für Bruchwerte.
  • Viele verschiedene Werte oder echte Messgrößen: ein Meta-Schieberegler statt eines Attributs mit Hunderten von Begriffen.
  • Schieberegler in den falschen Kategorien: Dynamische Nachzählung aktivieren (Enable dynamic recount) bei Attribut-Schiebereglern, Leere Begriffe ausblenden (Hide empty terms) bei Meta-Schiebereglern.

Zeigt ein Schieberegler nach diesen Schritten weiterhin falsche Werte, fragen Sie im HUSKY-Support-Forum nach und nennen Sie das Attribut oder den Meta-Schlüssel, einige Beispielwerte und einen Link zur Seite.