Obține titlul categoriei curente de taxonomie pentru produse în WooCommerce

21 nov. 2013, 00:17:48
Vizualizări: 46.7K
Voturi: 3

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.

1
Comentarii

Te rog să urmărești întrebările pe care le-ai adresat, este o parte importantă a procesului pe WPSE - vezi Ce ar trebui să fac când cineva îmi răspunde la întrebare? și De ce este important să votezi? pentru o înțelegere mai profundă. Mulțumesc!

Nicolai Grossherr Nicolai Grossherr
28 nov. 2013 00:05:44
Toate răspunsurile la întrebare 2
4

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.

21 nov. 2013 02:50:11
Comentarii

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

Nicolai Grossherr Nicolai Grossherr
21 nov. 2013 03:06:48

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

Kapitol Kapitol
21 nov. 2013 03:42:03

@ialocin Așa este! Învățăm ceva nou în fiecare zi.

helgatheviking helgatheviking
21 nov. 2013 12:52:07

Motto-ul meu de viață :)

Nicolai Grossherr Nicolai Grossherr
28 nov. 2013 00:05:13
6

Î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:

21 nov. 2013 01:21:09
Comentarii

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.

Kapitol Kapitol
21 nov. 2013 01:49:49

Cred că te-am înțeles greșit, vezi ediția mea. @Kapitol

Nicolai Grossherr Nicolai Grossherr
21 nov. 2013 02:02:05

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;"

Kapitol Kapitol
21 nov. 2013 02:10:24

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

Nicolai Grossherr Nicolai Grossherr
21 nov. 2013 02:13:51

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ă.

Kapitol Kapitol
21 nov. 2013 02:19:15

Ș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

Nicolai Grossherr Nicolai Grossherr
21 nov. 2013 02:31:15
Arată celelalte 1 comentarii