Получить категорию по идентификатору продукта?
-
-
Что представляет собой идентификатор?Что такое «продукт»?Это произвольный тип сообщения?Мета-поле?Какая?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
-
Привет,это продукт woocommerce,и это тип сообщения.Hi, It's a woocommerce product and it's a post type.
- 0
- 2012-11-23
- Rodrigo Sanz
-
4 ответ
- голосов
-
- 2012-11-23
Поскольку вопрос помечен как woocommerce,я предполагаю,что это продукт CPT,созданный плагином woocommerce wordpress.Этот ответ неприменим,если это не так.
Категории продуктов не являются обычными категориями,это настраиваемая таксономия,созданная специально для продуктов,которые просто помечены как «Категории».
Вам следует просмотреть документацию woocommerce,чтобы найти какую-то функцию,которая сделает это за вас. Если вы ничего не найдете,вы можете попробовать альтернативное решение.Для этого сначала вы должны знать название таксономии.Вы можете скопировать его из URL-адреса в вашем браузере,когда вы посещаете экран редактирования категорий в серверной части.Затем вы можете использовать
wp_get_post_terms
,чтобы получить условия.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.-
Привет,спасибо за ответ.И да,это продукт woocommerce в wordpress.Хорошо,я попробую,каковы $ args для wp_get_post_terms?Я вижу,что "taxonomy" и "args" необязательны,поэтому я собираюсь попробовать только с идентификатором.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
-
Только с ID работать не будет.Таксономия по умолчанию -post_tag.Здесь нужно передать название таксономии.Он будет работать без `$ args`,но вы можете использовать его,если хотите.Он предназначен для переопределения значений по умолчанию,как описано на [этой странице] (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
-
Я тестировал,но не выводит категорию,к которой относится продукт. Я использовал это, 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
-
он выводит следующее: 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
-
А категории в массиве нет?Я сделал что-то не так?And there's not category in the array ? Did i do something wrong?
- 0
- 2012-11-25
- Rodrigo Sanz
-
Вы использовалиproduct_tag.Возможно ли,что название категории было «product_category»?Код кажется прекрасным,и в результате вы получаете термин с именем `new` с идентификатором 104. Является ли`new` именем одного из тегов?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
Вариант №1
Получите всеproduct_cat с помощью этой функции
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
Вариант 2 Если вам нужны только их идентификаторы,вы можете получить всеproduct_category_ids,связанные с конкретным продуктом ,используя эту функцию:
global $product; $product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
< sizesExtra
Если вы хотите распечатать,например,названия категорий,вам понадобится термин-объект категории. Его можно получить с помощью
get_term_by()
.Пример:
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
Я ответил на свой вопрос,эта работа для меня:
<?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'); ?>
Спасибо,Мридул Аггарвал,за вашу помощь
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
-
Вы могли бы,по крайней мере,проголосовать за ответ Мридула,если не думаете,что он достаточно полный,чтобы его можно было принять как правильный.Очевидно,это привело вас на правильный путь.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; } ?>
-
Пожалуйста,** [отредактируйте] свой ответ ** и добавьте пояснение: ** почему ** это может решить проблему?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2020-08-19
- fuxia
У меня есть
ID
продукта (1345
). Как я могу получить название категории этого конкретного продукта?Я стараюсь
но выводит:
Что это значит?
Спасибо