Obtenir la catégorie à partir d'un identifiant d'un produit?
-
-
Que représente l'ID?Qu'est-ce qu'un «produit»?S'agit-il d'untype depublicationpersonnalisé?Unméta-champ?Quoi?What does the ID represent? What is a 'product'? Is this a custom post type? A meta field? What?
- 2
- 2012-11-23
- s_ha_dum
-
Salut,C'est unproduit woocommerceet c'est untype depublication.Hi, It's a woocommerce product and it's a post type.
- 0
- 2012-11-23
- Rodrigo Sanz
-
4 réponses
- votes
-
- 2012-11-23
Puisque la questionesttaguée woocommerce,je suppose qu'il s'agit d'unproduit CPT créépar leplugin woocommerce wordpress.Cette réponsene s'appliquepas si cen'estpas le cas.
Les catégories deproduitsne sontpas des catégoriesnormales,il s'agit d'unetaxonomiepersonnalisée créée spécifiquementpour lesproduits quiest simplement étiquetée "Catégories".
Vous devriezparcourir la documentation woocommercepourtrouver unefonction quiferait celapour vous,si vousne trouvez rien,vouspouvezessayer une solution alternative.Pour cela,vous devez d'abord connaître lenom de lataxonomie.Vouspouvez le copier àpartir de l'URL de votrenavigateur lorsque vous visitez l'écran demodification des catégories dans lebackend.Ensuite,vouspouvez utiliser
wp_get_post_terms
pour obtenir lestermes.Since the question is tagged woocommerce, i'm assuming that it's a product CPT created by woocommerce wordpress plugin. This answer doesn't apply if that's not the case.
The products categories is not normal categories, they are a custom taxonomy created specifically for products which is just labeled as "Categories".
You should go through the woocommerce documentation to find some function that would do this for you, if you don't find anything you can try an alternative solution. For that, first you should know the name of the taxonomy. You can copy it from inside the url in your browser when you visit categories edit screen in the backend. Then you can use
wp_get_post_terms
to get the terms.-
Salut,mercipour votre réponse.Et oui,c'est unproduit woocommerce dans wordpress.Ok,je vais l'essayer,quels sont les $ argspour wp_get_post_terms?Je vois que la "taxonomie"et les "args" sontfacultatives,doncje vaisessayer uniquement avec l'ID.Hi, thanks for your answer. And yes is a woocommerce product in wordpress. Ok, i'm going to try it, what are the $args for wp_get_post_terms ? i see the "taxonomy" and "args" are optional, so i'm going to try only with the ID.
- 0
- 2012-11-23
- Rodrigo Sanz
-
Celane fonctionnerapas uniquement avec unepièce d'identité.Lataxonomiepar défautest «post_tag».Vous devez ypasser lenom de lataxonomie.Celafonctionnera sans `$ args`mais vouspouvez l'utiliser si vous le souhaitez.Ilest destiné à remplacer les valeurspar défaut commeexpliqué sur [cettepage] (http://codex.wordpress.org/Function_Reference/wp_get_object_terms)It won't work only with ID. The default taxonomy is `post_tag`. You need to pass the name of the taxonomy there. It will work without `$args` but you can use it if you want. It's meant to override the defaults as explained on [this page](http://codex.wordpress.org/Function_Reference/wp_get_object_terms)
- 0
- 2012-11-24
- Mridul Aggarwal
-
J'aitestémaisiln'affichepas la catégorie dans laquelle setrouve leproduit. J'ai utilisé ceci, Php $term_list=wp_get_post_terms (1345,'product_tag',array ("fields"=> "all")); print_r ($term_list); ?>I tested but it doesn't output the categiry that the product is in. I used this, "all")); print_r($term_list); ?>
- 0
- 2012-11-25
- Rodrigo Sanz
-
il renvoie ceci: Array ([0]=> stdClass Object ([term_id]=> 104 [name]=>new [slug]=>new [term_group]=> 0 [term_taxonomy_id]=> 104 [taxonomy]=>product_tag[description]=> Hola quétalestoes 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étalestoes una descripción? [parent]=> 0 [count]=> 8))it outputs this :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 ) )
- 0
- 2012-11-25
- Rodrigo Sanz
-
Etiln'y apas de catégorie dans letableau?Est-ce quej'aifait quelque chose demal?And there's not category in the array ? Did i do something wrong?
- 0
- 2012-11-25
- Rodrigo Sanz
-
Vous avez utilisé `product_tag`.Est-ilpossible que lenom de la catégorie soit «product_category»?Le code semble correctet àpartir de la sortie,vous obtenez untermenommé «new» avec unidentifiant de 104. «new»est-il lenom de l'une desbalises?You used `product_tag`. Is it possible that the category name was `product_category`? The code seems fine & as from the output you're getting a term named `new` with an id of 104. Is `new` the name of one of the tags?
- 0
- 2012-11-25
- Mridul Aggarwal
-
- 2017-09-02
Optionn ° 1
Obteneztous lesproduct_caten utilisant cettefonction
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
Option 2 Si vousn'avezbesoin que de leursidentifiants,vouspouvez obtenirtous lesidentifiantsproduct_category_ids associés à un produit spécifique,à l'aide de cettefonction:
global $product; $product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
<₹Extra
Si vous souhaitezimprimer -parexemple - lesnoms des catégories,vous avezbesoin de la catégorieterme-objet. Celapeut être récupéréen utilisant
get_term_by()
.Unexemple:
foreach( $product_cats_ids as $cat_id ) { $term = get_term_by( 'id', $cat_id, 'product_cat' ); echo $term->name; }
Option #1
Get all product_cat's using this function
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
Option #2 If you only need their ids, you can get all product_category_ids associated with a specific product, using this function:
global $product; $product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
Extra
If you would like to print out - for instance - the categories names, you need the category term-object. This can be retrieved using
get_term_by()
.An example:
foreach( $product_cats_ids as $cat_id ) { $term = get_term_by( 'id', $cat_id, 'product_cat' ); echo $term->name; }
-
- 2012-11-27
J'ai répondu àmapropre question,cetravailpourmoi:
<?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 Aggarwalpour votre aide
I answered my own question, this work for me :
<?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'); ?>
Thanks Mridul Aggarwal for your help
-
Vouspourriez aumoins voterpour la réponse de Mridul,si vousne pensezpas qu'elleest suffisamment complètepour être acceptée comme correcte.Detoute évidence,cela vous amis sur labonne voie.You could at least upvote Mridul's answer, if you don't think it's complete enough to be accepted as correct. Clearly it got you on the right track.
- 3
- 2012-11-27
- Johannes Pille
-
- 2020-08-19
<?php $terms = get_the_terms($product->ID, 'product_cat'); foreach ($terms as $term) { $product_cat = $term->name; echo $product_cat; break; } ?>
<?php $terms = get_the_terms($product->ID, 'product_cat'); foreach ($terms as $term) { $product_cat = $term->name; echo $product_cat; break; } ?>
-
Veuillez ** [modifier] votre réponse **,et ajouter uneexplication: **pourquoi ** celapourrait-il résoudre leproblème?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2020-08-19
- fuxia
J'ai l '
ID
d'unproduit (1345
) commentpuis-je obtenir lenom de catégorie de ceproduit spécifique?J'essaye
maisilproduit:
Qu'est-ce que cela signifie?
Merci