Ottieni il titolo della categoria corrente di prodotti nella tassonomia WooCommerce
Desidero mostrare il titolo della categoria tassonomica corrente del prodotto nella pagina del singolo prodotto.
Il codice qui sotto funziona, ma restituisce tutte le categorie di prodotti. Ho bisogno di aiuto per isolare la categoria corrente.
<?php
global $post;
$args = array( 'taxonomy' => 'product_cat',);
$terms = wp_get_post_terms($post->ID,'product_cat', $args);
$count = count($terms);
if ($count > 0) {
foreach ($terms as $term) {
echo '<div style="direction:rtl;">';
echo 'Categoria: ' . $term->name;
echo '</div>';
}
}
?>
Dopo alcune ore di sperimentazione e ricerca, voi siete la mia ultima speranza per una soluzione. Grazie.

Potresti usare get_the_term_list
echo get_the_term_list( $post->ID, 'product_cat', '<div style="direction:rtl;">', '</div>', '' );
Il sistema di visualizzazione di un solo titolo di categoria su una pagina singola di prodotto fallisce se inizi ad aggiungere l'elemento a più categorie.
Una volta sono impazzito su un progetto in cui un cliente aggiungeva elementi del portfolio a due categorie e voleva comunque che mostrassi il titolo della categoria "corretta" a seconda dei casi. Quel progetto mi ha portato a creare il plugin Radio Buttons for Taxonomies per limitare gli utenti a un singolo termine in determinate tassonomie.

Solo come informazione aggiuntiva, usare get_the_term_list()
è esattamente ciò che fa $product->get_categories()
.

@helgatheviking Grazie per aver dedicato tempo ad aiutare. Entrambe le soluzioni funzionano per una singola categoria.

Nella maggior parte dei temi che conosco questo è lo standard, ma il tuo potrebbe essere diverso. Il codice qui sotto proviene dal file meta.php
, che è responsabile per mostrare i meta dati - categorie, tag - in WooCommerce.
Codice:
<?php
$size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Categoria:', 'Categorie:', $size, 'woocommerce' ) . ' ', '.</span>' );
?>
Modifica:
Ho fornito una risposta estesa a questo problema qualche tempo fa:

Grazie, ialocin. Questo codice restituisce tutte le categorie. Non è quello che sto cercando. Voglio che venga visualizzata la singola categoria in cui ti trovi attualmente.

La tua soluzione mostra effettivamente una singola categoria, ma non è ancora la categoria corrente. Hai affrontato il problema di avere più categorie di livello principale dicendo "non funzionerà se un prodotto ha più categorie principali/di primo livello, o almeno non le mostrerà tutte;"

Sei in una pagina di prodotto singolo, se un prodotto ha più di una categoria di livello superiore, come può esserci una singola categoria corrente? @Kapitol

Buona domanda. Potrebbe essere impossibile. Forse è una soluzione simile al breadcrumb. Ecco cosa volevo ottenere.
In una pagina di categoria viene elencata la categoria corrente in cui ti trovi. Cliccando su un prodotto all'interno di quella categoria si viene portati al prodotto. Voglio un titolo che indichi da quale categoria precedente provieni.

Lo so, è impossibile senza logica aggiuntiva. A proposito, anche i breadcrumb hanno lo stesso problema: come dovrebbero sapere qual è il percorso corretto. Normalmente ne viene scelto uno, a seconda di come la funzione sottostante ordina i termini. Il tuo problema d'altra parte può essere risolto passando un valore alla pagina del prodotto singolo dalla pagina della categoria da cui provieni, ma sarebbe completamente diverso dalla domanda che hai fatto. Dovresti approfondire questo aspetto e fare una nuova domanda. Questa secondo me è risolta o senza risposta. @Kapitol
