Obține titlul categoriei curente de taxonomie pentru produse în WooCommerce
Doresc să afișez titlul categoriei curente de taxonomie pentru produse în pagina individuală a produsului.
Codul de mai jos funcționează, dar returnează toate categoriile de produse. Am nevoie de ajutor pentru a identifica doar categoria curentă.
<?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>';
}
}
?>
După câteva ore de experimentare și căutare, voi sunteți ultima mea speranță pentru o soluție. Mulțumesc.

Poți folosi funcția get_the_term_list
echo get_the_term_list( $post->ID, 'product_cat', '<div style="direction:rtl;">', '</div>', '' );
Sistemul de afișare a unui singur titlu de categorie pe pagina unui produs individual eșuează atunci când începi să adaugi elementul în mai multe categorii.
Am înnebunit odată într-un proiect unde un client adăuga elemente de portofoliu în două categorii și totuși dorea să afișez titlul categoriei 'corecte' în funcție de context. Acel proiect m-a determinat să creez plugin-ul Radio Buttons for Taxonomies pentru a restricționa utilizatorii la un singur termen în anumite taxonomii.

Doar ca informație suplimentară, folosirea get_the_term_list()
este exact ceea ce face $product->get_categories()
.

@helgatheviking Mulțumesc pentru timpul acordat pentru ajutor. Ambele soluții funcționează pentru o singură categorie.

În majoritatea temelor pe care le cunosc acest lucru este standard, dar tema ta poate fi diferită. Codul de mai jos provine din fișierul meta.php
, care este responsabil pentru afișarea metadatelor - categorii, etichete - în WooCommerce.
Cod:
<?php
$size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Categorie:', 'Categorii:', $size, 'woocommerce' ) . ' ', '.</span>' );
?>
Editare:
Am oferit un răspuns extins la această problemă acum ceva timp:

Mulțumesc, ialocin. Acest cod returnează toate categoriile. Nu este ceea ce caut eu. Eu doresc să fie afișată doar categoria individuală în care vă aflați în prezent.

Soluția ta afișează într-adevăr o singură categorie, dar încă nu este categoria curentă. Ai abordat problema de a avea mai multe categorii de nivel superior spunând "nu va funcționa dacă un produs are mai multe categorii principale/de nivel superior, sau cel puțin nu le va afișa pe toate;"

Ești pe o pagină de produs individual, dacă un produs are mai mult de o categorie de nivel superior, cum poate exista o singură categorie curentă? @Kapitol

Bună întrebare. S-ar putea să fie imposibil. Poate este o soluție de tip breadcrumbs. Mai jos este ceea ce doream să obțin.
Într-o pagină de categorie este listată categoria curentă în care te afli. Dând clic pe un produs din cadrul acelei categorii, ești dus la pagina produsului. Vreau un titlu care să indice că ai venit de la categoria anterioară.

Știu, este imposibil fără logică suplimentară. Apropo, breadcrumbs-urile au aceeași problemă, cum ar trebui să știe care este calea corectă. În mod normal, una este aleasă, în funcție de cum funcția din spate sortează termenii. Problema ta, pe de altă parte, poate fi rezolvată prin transmiterea unei valori către pagina de produs individual de la pagina de categorie de unde vii, dar asta ar fi complet diferit de întrebarea pe care ai pus-o. Ar trebui să te uiți la asta și să pui o întrebare nouă. Aceasta, în opinia mea, este rezolvată sau fără răspuns. @Kapitol
