¿Obtener la categoría de un ID de un producto?
-
-
¿Qué representa laidentificación?¿Quées un 'producto'?¿Eseste untipo depublicaciónpersonalizada?¿Unmetacampo?¿Qué?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
-
Hola,es unproducto de woocommerce yes untipo depublicación.Hi, It's a woocommerce product and it's a post type.
- 0
- 2012-11-23
- Rodrigo Sanz
-
4 respuestas
- votos
-
- 2012-11-23
Dado que lapreguntaestáetiquetada como woocommerce,supongo quees unproducto CPT creadoporel complemento de wordpress de woocommerce.Esta respuestano se aplica siesenoesel caso.
Las categorías deproductosno son categoríasnormales,son unataxonomíapersonalizada creadaespecíficamenteparaproductos que solo seetiquetan como "Categorías".
Debes revisar la documentación de woocommerceparaencontrar algunafunción quepueda hacerestoporti,sinoencuentrasnada,puedesprobar una solución alternativa.Paraeso,primero debes saberelnombre de lataxonomía.Puede copiarlo desdeelinterior de la URLen sunavegador cuando visite lapantalla deedición de categoríasen elbackend.Luego,puede usar
wp_get_post_terms
para obtener lostérminos.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.-
Hola,graciaspor su respuesta.Y sí,es unproducto de woocommerceen wordpress.Ok,voy aintentarlo,¿cuáles son los $ argspara wp_get_post_terms?Veo que la "taxonomía" y los "argumentos" son opcionales,así que lointentaré solo conel 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
-
Nofuncionará solo con ID.Lataxonomíapredeterminadaes `post_tag`.Debepasarelnombre de lataxonomía allí.Funcionará sin `$ args`peropuede usarlo si lo desea.Está destinado a anular los valorespredeterminados como seexplicaen [estapágina] (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
-
Probéperonomuestra la categoríaen la que seencuentraelproducto. Uséesto, 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
-
generaesto: 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
-
¿Yno hay categoríaen lamatriz?¿Hice algomal?And there's not category in the array ? Did i do something wrong?
- 0
- 2012-11-25
- Rodrigo Sanz
-
Usó `product_tag`.¿Esposible queelnombre de la categoría sea `product_category`?El códigopareceestarbien y,apartir de la salida,obtiene untérmino llamado "nuevo" con unaidentificación de 104. ¿Es "nuevo"elnombre de una de lasetiquetas?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
Opciónn. ° 1
Obtengatodos losproduct_cat que utilizanestafunción
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
Opciónn.º 2 Si solonecesita sus ID,puede obtenertodos losproduct_category_ids asociados con un producto específico,utilizandoestafunción:
global $product; $product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
<×Extra×
Si deseaimprimir,porejemplo,losnombres de las categorías,necesita la categoríatérmino-objeto. Esto sepuede recuperar usando
get_term_by()
.Unejemplo:
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
Respondími propiapregunta,estetrabajoparamí:
<?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'); ?>
Gracias Mridul Aggarwalpor su ayuda
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
-
Almenospodría votar afavor la respuesta de Mridul,sino cree que sea lo suficientemente completa comopara ser aceptada como correcta.Claramente,te pusoen el camino correcto.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; } ?>
-
** [edite] su respuesta ** y agregue unaexplicación: ** ¿por qué **estopodría resolverelproblema?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2020-08-19
- fuxia
Tengoel
ID
de unproducto (1345
) ¿cómopuedo obtenerelnombre de la categoría deeseproductoespecífico?Lointento
pero da como resultado:
¿Qué significaeso?
Gracias