Stai provando a far funzionare la function in_category()
senza successo? Questo post fa al caso tuo, allora.
in_category()
, infatti, non può aiutarci con i prodotti di Woocommerce, perché è una funzione nata con WordPress, e quindi relativa ad Articoli (post) o altri tipi di post con i Tag abilitati.
Woocommerce, infatti, aggiunge un nuovo Tipo di post (Custom post type) che corrisponde a product
, ed anche le categorie di prodotti sono personalizzate (custom taxonomy), chiamate product_cat
. Quindi i due tipi di categorie, quelli degli Articoli e quelli dei Prodotti sono indipendenti.
Dovremmo utilizzare quindi la funzione has_term()
per capire se uno specifico prodotto è presente in una categoria:
has_term( $terms = '', $taxonomy = '', $post = null )
$terms
: utilizziamo lo slug o l’ID della categoria prodotti. Possiamo passare anche un array di valori;
$taxonomy
: se vogliamo capire se un prodotto è in una Categoria, indichiamo product_cat. Se invece vogliamo capire se il prodotto ha un determinato Tag, usiamo product_tag.
$post
: passiamo l’ID del prodotto o un oggetto WP_Post. Se non passiamo nulla, il default è l’attuale prodotto, ma soltanto se ci troviamo in un loop.
Vediamo un esempio completo:
if (has_term( "sandali", 'product_cat', 50)) { // il prodotto con ID 50 è nella Categoria che ha slug "sandali" } if (has_term(14, 'product_cat', 50)) { // il prodotto con ID 50 è nella Categoria con ID = 14 } if (has_term(array( 'sneaker', 'zaini' ), 'product_cat', 50) { // il prodotto con ID 50 è sia nella Categoria "sneaker" che "zaini" }