web-dev-qa-db-fra.com

Obtenir la catégorie à partir de l'ID d'un produit?

J'ai la ID d'un produit (1345) comment puis-je obtenir le nom de la catégorie de ce produit spécifique?

J'essaie

$post_categories = wp_get_post_categories( $post->ID );
print_r( $post_categories );

mais il produit:

Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )

Qu'est-ce que cela signifie?

Merci

6
Rodrigo Sanz

Puisque la question est étiquetée woocommerce, je suppose qu’il s’agit d’un produit CPT créé par le plugin wordpress de woocommerce. Cette réponse ne s'applique pas si ce n'est pas le cas.

Les catégories de produits ne sont pas des catégories normales, elles constituent une taxonomie personnalisée créée spécifiquement pour les produits et portant simplement le libellé "Catégories".

Consultez la documentation de woocommerce pour trouver une fonction qui le ferait pour vous. Si vous ne trouvez rien, vous pouvez essayer une solution alternative. Pour cela, vous devez d’abord connaître le nom de la taxonomie. Vous pouvez le copier depuis l'URL de votre navigateur lorsque vous visitez l'écran de modification de catégories dans le backend. Ensuite, vous pouvez utiliser wp_get_post_terms pour obtenir les termes.

7
Mridul Aggarwal

J'ai répondu à ma propre question, ce travail pour moi:

<?php 
$term_list = wp_get_post_terms($id_product,'product_cat',array('fields'=>'ids'));
$cat_id = (int)$term_list[0];
echo get_term_link ($cat_id, 'product_cat');

?>

Merci Mridul Aggarwal pour votre aide

8
Rodrigo Sanz

Option 1

Obtenir tous les produits product_cat en utilisant cette fonction

global $product;

$terms = get_the_terms( $product->get_id(), 'product_cat' );

Documents officiels


Option # 2 Si vous n'avez besoin que de leurs identifiants, vous pouvez obtenir tous les ID_de_produit_de_la_signe correspondant à un produit spécifique, en utilisant cette fonction:

global $product;

$product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );

Documents officiels


Supplémentaire

Si vous souhaitez imprimer - par exemple - les noms de catégories, vous avez besoin de la catégorie term-object. Ceci peut être récupéré en utilisant get_term_by().

Un exemple:

foreach( $product_cats_ids as $cat_id ) {
    $term = get_term_by( 'id', $cat_id, 'product_cat' );

    echo $term->name;
}
5
Unicco