Cum obții categoria unui produs după ID?
Am un ID
al unui produs (1345
) și vreau să aflu numele categoriei acelui produs specific?
Am încercat
$post_categories = wp_get_post_categories( $post->ID );
print_r( $post_categories );
dar îmi afișează:
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )
Ce înseamnă asta?
Mulțumesc
Opțiunea #1
Obține toate categoriile de produse (product_cat) folosind această funcție
global $product;
$terms = get_the_terms( $product->get_id(), 'product_cat' );
Opțiunea #2 Dacă ai nevoie doar de ID-urile categoriilor, poți obține toate ID-urile de categorii asociate unui anumit produs, folosind această funcție:
global $product;
$product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
Extra
Dacă dorești să afișezi - de exemplu - numele categoriilor, ai nevoie de obiectul termenului categoriei. Acesta poate fi obținut folosind get_term_by()
.
Un exemplu:
foreach( $product_cats_ids as $cat_id ) {
$term = get_term_by( 'id', $cat_id, 'product_cat' );
echo $term->name;
}

Deoarece întrebarea este etichetată cu woocommerce, presupun că este un CPT de produs creat de plugin-ul WordPress WooCommerce. Acest răspuns nu se aplică dacă nu este cazul.
Categoriile de produse nu sunt categorii obișnuite, ele sunt o taxonomie personalizată creată special pentru produse, care este etichetată doar ca "Categorii".
Ar trebui să parcurgeți documentația WooCommerce pentru a găsi o funcție care să facă asta pentru dvs. Dacă nu găsiți nimic, puteți încerca o soluție alternativă. Pentru aceasta, mai întâi ar trebui să știți numele taxonomiei. Îl puteți copia din URL-ul din browser când vizitați ecranul de editare al categoriilor în panoul de administrare. Apoi puteți folosi wp_get_post_terms
pentru a obține termenii.

Salut, mulțumesc pentru răspuns. Da, este un produs WooCommerce în WordPress. Ok, o să încerc, care sunt parametrii $args pentru wp_get_post_terms? Văd că "taxonomy" și "args" sunt opționale, așa că o să încerc doar cu ID-ul.

Nu va funcționa doar cu ID-ul. Taxonomia implicită este post_tag
. Trebuie să treci numele taxonomiei acolo. Va funcționa fără $args
, dar îl poți folosi dacă dorești. Este menit să suprascrie valorile implicite, așa cum este explicat pe această pagină

Am testat, dar nu afișează categoria în care se află produsul. Am folosit asta, <?php $term_list = wp_get_post_terms(1345, 'product_tag', array("fields" => "all")); print_r($term_list); ?>

afișează asta:Array ( [0] => stdClass Object ( [term_id] => 104 [name] => new [slug] => new [term_group] => 0 [term_taxonomy_id] => 104 [taxonomy] => product_tag [description] => Hola qué tal esto es una descripción? [parent] => 0 [count] => 8 ) ) Array ( [0] => stdClass Object ( [term_id] => 104 [name] => new [slug] => new [term_group] => 0 [term_taxonomy_id] => 104 [taxonomy] => product_tag [description] => Hola qué tal esto es una descripción? [parent] => 0 [count] => 8 ) )

Am răspuns singur la întrebarea mea, această soluție a funcționat pentru mine:
<?php
// Obține lista de termeni (categorii) pentru un produs specific
$term_list = wp_get_post_terms($id_product, 'product_cat', array('fields'=>'ids'));
// Extrage ID-ul primei categorii
$cat_id = (int)$term_list[0];
// Afișează link-ul către categoria respectivă
echo get_term_link($cat_id, 'product_cat');
?>
Mulțumesc Mridul Aggarwal pentru ajutor

<?php
$terms = get_the_terms($product->ID, 'product_cat');
foreach ($terms as $term) {
$product_cat = $term->name; // Obține numele categoriei de produs
echo $product_cat; // Afișează numele categoriei
break; // Ieșim din buclă după prima categorie găsită
}
?>

Obține toate categoriile de produse (product_cat) și afișează-le
global $product;
$product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
foreach( $product_cats_ids as $cat_id ) {
$term = get_term_by( 'id', $cat_id, 'product_cat' );
echo $term->name;
}
