HUSKY - WooCommerce Product Filter Professional

Filtro slider di intervallo WooCommerce per attributi e campi meta

Dimensioni, potenza, lunghezza, diagonale dello schermo, anno, chilometraggio: i dati numerici dei prodotti richiedono uno slider di intervallo invece di una lunga lista di checkbox. Un filtro slider di intervallo WooCommerce per gli attributi è facile da attivare in HUSKY, ma è altrettanto facile ritrovarsi con uno slider che mostra 100000 prima di 9000, divide 1,9 in due valori o va sempre da 0 a 100. Il motivo è quasi sempre lo stesso: esistono due slider diversi e trattano i numeri in modo diverso. Questa guida spiega entrambi, la configurazione di ciascuno e le soluzioni per ordine errato, decimali e intervalli vuoti.

Due slider di intervallo: valori di un attributo o campo meta numerico

HUSKY può disegnare uno slider di intervallo a partire da due tipi di dati, e la scelta determina ciò che lo slider è in grado di fare.

Slider per attributo (tassonomia)Slider per campo meta
DatiTermini di un attributo globale o di un'altra tassonomia di prodottoUn numero memorizzato nei meta del prodotto: _length, _weight, un campo numerico ACF, qualsiasi campo personalizzato
Cosa significa un intervalloTutti i termini tra le due maniglie, nell'ordine in cui i termini sono elencatiUn vero confronto numerico: valore compreso tra il minimo e il massimo
Posizioni dello sliderUna tacca per ogni termine esistente, a distanza uniformeQualsiasi valore tra minimo e massimo, con il passo impostato
Minimo e massimoPrimo e ultimo termineImpostati a mano nell'opzione Intervallo (Range)
Caselle numeriche da/aNoSì, Mostra input (Show inputs)
Scale testuali (Morbido, Medio, Duro)SìNo, solo numeri
Prodotti variabiliTrovati tramite i termini di attributo del prodottoVengono cercati solo i meta del prodotto stesso, non quelli delle sue varianti

La differenza fondamentale: i termini degli attributi sono testo. WordPress memorizza 9000 e 100000 come nomi, non come numeri, quindi lo slider per attributo può solo scorrere un elenco di termini in un determinato ordine. Non calcola mai nulla. Lo slider per campo meta confronta i numeri nel database, quindi gestisce qualsiasi valore di un intervallo, compresi i valori che nessun altro prodotto ha.

Gli attributi personalizzati digitati direttamente nella scheda Attributi di un prodotto, senza un attributo globale alle spalle, non sono tassonomie e nessun tipo di filtro può usarli. Crea prima un attributo globale in Prodotti → Attributi (vedi gestione delle tassonomie dei prodotti nella documentazione di WooCommerce).

Configurare un filtro slider di intervallo per gli attributi

  1. Crea l'attributo globale, ad esempio Potenza, e aggiungi i suoi valori come termini: 5, 7.5, 10, 15. Assegnali ai prodotti come di consueto.
  2. Apri WooCommerce → Impostazioni → Products Filter → Struttura e imposta il tipo di quell'attributo su Slider. L'estensione Slider aggiunge questo tipo.
  3. Fai clic sul pulsante opzioni aggiuntive (additional options) (l'ingranaggio) accanto all'attributo e imposta le opzioni dello slider:
    • Tipo (Type): doppio (double) per un intervallo da-a; singolo (single) per una sola maniglia che seleziona tutto dal primo valore fino alla maniglia ("fino a 10 kW").
    • Passo della griglia (Grid step): quali etichette sotto lo slider sono visibili. 1 le mostra tutte, 2 una ogni due, -1 nasconde le etichette tra gli estremi. Utile quando valori lunghi si sovrappongono.
    • Abilita riconteggio dinamico (Enable dynamic recount): elimina i valori senza prodotti nei risultati correnti (vedi sotto).
    • Skin dello slider (Slider skin): il design di questo slider.
  4. Lascia Logica di filtraggio (Logic of filtering) su OR. Lo slider invia tutti i termini del tratto scelto, ad esempio pa_power=5,7-5,10, e a un prodotto ne basta uno. Con AND un prodotto dovrebbe averli tutti e non verrebbe trovato nulla.

Poiché un intervallo è "i termini compresi tra le maniglie", l'ordine dei termini è tutta la logica dello slider. Se 6.5 si trova dopo 8.2 nell'elenco, un intervallo da 6 a 7 lo salta. La sezione successiva risolve l'ordine.

Valori dello slider per attributo in ordine sbagliato

Sintomi tipici: 100000 compare prima di 9000, 10 e 11 vengono prima di 2, i valori negativi vanno -1, -2, -3, 0, 1, oppure le maniglie saltano avanti e indietro durante il trascinamento. Sono tutti casi di ordinamento testuale. La soluzione è dare ai termini un ordine numerico.

La soluzione migliore: lasciare che WooCommerce ordini l'attributo in modo numerico

Vai in Prodotti → Attributi, modifica l'attributo e imposta Ordinamento predefinito (Default sort order) su Nome (numerico) (Name (numeric)). WooCommerce ordina quindi i termini in base al valore numerico dei loro nomi, gestendo i decimali scritti con il punto, i numeri negativi e i nomi che iniziano con un numero, come 10 cm. Nelle opzioni aggiuntive dello slider lascia Ordina termini (Sort terms) su Predefinito (Default) in modo che HUSKY mantenga quell'ordine. Se Cache dei termini (Cache terms) è attiva (Avanzate → Opzioni), premi poi cancella cache dei termini (clear terms cache).

Per una scala testuale scegli invece Ordinamento personalizzato (Custom ordering) e trascina i termini al loro posto nella schermata Configura termini (Configure terms) dell'attributo: Morbido, Medio, Medio-duro, Duro. Lo stesso trascinamento funziona per qualsiasi elenco numerico di cui vuoi controllare l'ordine a mano.

Le opzioni Ordina termini di HUSKY

L'opzione Ordina termini (Sort terms) nelle opzioni aggiuntive dello slider sostituisce l'ordine predefinito:

  • Titolo (Title) usa l'ordinamento naturale dei nomi: corretto per i numeri interi positivi (2 prima di 10) e per nomi come 10 cm, ma non per decimali o numeri negativi.
  • Numerico (Numeric.) confronta il valore intero dello slug del termine. Funziona solo per numeri interi positivi: lo slug di 6.5 è 6-5, che conta come 6, e WordPress rimuove il segno meno iniziale quando crea uno slug, quindi -3 viene ordinato come 3.

Codice: ordine numerico per qualsiasi slider di tassonomia

Per una tassonomia personalizzata, dove Nome (numerico) (Name (numeric)) di WooCommerce non è disponibile, ordina i valori dello slider nel codice. Il filtro woof_sort_terms_before_out riceve i termini di ciascun filtro e il tipo di filtro:

/**
 * 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 );

I termini senza un numero iniziale (una scala testuale) valgono tutti 0 qui e mantengono il loro ordine esistente, quindi lo snippet non disturba questi slider.

Decimali, virgole e passi irregolari negli slider per attributo

  • Scrivi i decimali con il punto. Lo slider riceve le sue etichette come un unico elenco separato da virgole, quindi un termine chiamato 1,9 diventa due etichette, 1 e 9, e ogni posizione successiva punta al termine sbagliato. Rinomina questi termini in 1.9. Questo non ha nulla a che vedere con l'impostazione del separatore decimale del negozio: i nomi dei termini sono semplice testo.
  • Le posizioni sono equidistanti per termine, non per valore. I termini 1, 2, 5 e 50 ricevono quattro passi uguali. Se lo slider deve apparire proporzionale, aggiungi come termini i valori intermedi mancanti.
  • Uno slider ha bisogno di almeno due valori. Con soli due termini le maniglie possono stare solo alle due estremità. Con meno di due valori rimasti dopo il riconteggio dinamico, lo slider non viene mostrato affatto.
  • Si possono scegliere solo i termini esistenti. Un prodotto con il valore 6.5 viene trovato solo se il termine 6.5 esiste e si trova tra le maniglie.

Slider di intervallo per i campi meta: dimensioni, anni e altri numeri

Quando il valore è una vera misura, uno slider per campo meta è di solito lo strumento migliore: confronta numeri, accetta input da/a e resta veloce con migliaia di valori diversi. Configurazione con l'estensione Meta Fields:

  1. Apri la scheda Metadati (Meta Data) delle impostazioni del filtro. Inserisci la chiave in Aggiungi chiave personalizzata a mano (Add Custom key by hands), oppure usa Ottieni le chiavi da qualsiasi prodotto tramite il suo ID (Get keys from any product by its ID) per vedere quali chiavi ha un prodotto.
  2. Imposta il tipo del campo su numero (number) e la sua visualizzazione su Slider. Lo slider non è disponibile per i campi di testo o di data. Salva.
  3. Apri le opzioni aggiuntive del campo e compila Intervallo (Range) come min^max, ad esempio 10^250. Imposta Passo (Step) (0.5 funziona) e, se necessario, Prefisso (Prefix), Suffisso (Postfix) (cm), Mostra input (Show inputs) per le caselle numeriche da/a e Usa formattazione (Use prettify) per un separatore delle migliaia.
  4. Posiziona il nuovo elemento del filtro nella scheda Struttura come qualsiasi altro.

Chiavi utili: WooCommerce memorizza le dimensioni di spedizione e il peso di un prodotto come _length, _width, _height e _weight. Un campo numerico ACF viene memorizzato con il suo nome di campo. I dettagli sulle chiavi meta si trovano nella documentazione sui metadati.

Cose da sapere sugli slider per campo meta:

  • L'intervallo non viene mai calcolato. Lo slider mostra esattamente l'Intervallo (Range) che hai inserito; un campo vuoto ripiega su 0–100. Trovare il minimo e il massimo reali richiederebbe di leggere ogni prodotto a ogni visualizzazione di pagina. Il riconteggio dinamico decide quali filtri e valori vengono mostrati, non dove uno slider inizia e finisce. Aggiorna l'intervallo quando nuovi prodotti lo superano.
  • Memorizza numeri semplici con il punto come separatore decimale e senza separatore delle migliaia: 1250.5. Il database legge solo il numero all'inizio del valore, quindi 1,250.5 viene confrontato come 1 e 1250,5 come 1250.
  • Anni: intervallo come 1990^2026, passo 1 e Usa formattazione (Use prettify) su No, altrimenti 2026 viene mostrato come 2 026.
  • Varianti: vengono cercati i meta del prodotto stesso. Se il valore esiste solo nelle varianti, salvalo anche nel prodotto padre, oppure usa un attributo.

Valori decimali: woof_slider_meta_query_type

Per impostazione predefinita lo slider per campo meta confronta i valori come NUMERIC, che MySQL tratta come numeri interi. Un prodotto con 10.11 viene quindi trovato nell'intervallo 1–10, e 4.2, 4.4 e 4.6 contano tutti come 4. Per confrontare i decimali, cambia il tipo con il filtro 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 );

In DECIMAL(M,D), M è il numero totale di cifre e D le cifre dopo il punto. Sceglile in base al tuo valore più grande: con DECIMAL(5,3) il massimo è 99.999, e ogni valore maggiore viene trattato come 99.999.

Nascondere gli slider che non si applicano alla categoria corrente

  • Slider per attributo: imposta Abilita riconteggio dinamico (Enable dynamic recount) su Sì nelle sue opzioni aggiuntive. I valori senza prodotti nella categoria corrente e nella selezione del filtro scompaiono e, con meno di due valori rimasti, lo slider viene rimosso. Ogni valore costa una query di conteggio in più, quindi sugli attributi con centinaia di termini controlla la velocità della pagina oppure usa uno slider per campo meta.
  • Slider per campo meta: con Nascondi termini vuoti (Hide empty terms) impostato su Sì nella scheda Opzioni, uno slider per campo meta senza prodotti nel proprio intervallo nei risultati correnti non viene mostrato.

Uno slider per attributo senza valori viene rimosso dallo script del plugin dopo il caricamento della pagina, quindi il suo titolo può lampeggiare per un istante. Questo CSS lo nasconde fin dall'inizio (Aspetto → Personalizza → CSS aggiuntivo, oppure il foglio di stile del tuo tema child):

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

Quando il prodotto stesso ha un intervallo

Uno slider trova i prodotti in base a un solo valore per prodotto. Se un prodotto copre un intervallo (adatto a altezze di 150–190 cm, 3–10 giocatori), non esiste una ricerca integrata di "intervalli che si sovrappongono". Due modelli praticabili:

  • Due campi meta, ad esempio players_min e players_max, ciascuno con il proprio slider. Un visitatore che cerca un gioco per 4 giocatori imposta il primo slider su 1–4 e il secondo su 4–10.
  • Un attributo con un termine per ogni valore (150, 151 ... 190), tutti i termini adatti assegnati al prodotto, e l'attributo mostrato come slider. Assegna i termini in blocco anziché a mano.

Lista di controllo

  • Slider per attributo: attributo globale, decimali scritti con il punto, Ordinamento predefinito (Default sort order) impostato su Nome (numerico) (Name (numeric)) oppure termini trascinati in ordine, Logica di filtraggio (Logic of filtering) su OR.
  • Slider per campo meta: tipo di campo numero (number), valori numerici semplici, Intervallo (Range) compilato come min^max, un tipo decimale per i valori frazionari.
  • Molti valori distinti o misure reali: uno slider per campo meta invece di un attributo con centinaia di termini.
  • Slider nelle categorie sbagliate: Abilita riconteggio dinamico (Enable dynamic recount) per gli slider per attributo, Nascondi termini vuoti (Hide empty terms) per gli slider per campo meta.

Se uno slider mostra ancora valori sbagliati dopo questi passaggi, chiedi sul forum di supporto di HUSKY indicando l'attributo o la chiave meta, alcuni valori di esempio e un link alla pagina.