Получить категорию из идентификатора продукта?

Я имею ID от продукта (1345) как я могу получить название категории того определенного продукта?

Я пробую

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

но это производит:

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

Что они это означает?

Спасибо

6
23.11.2012, 17:42
2 ответа

Так как вопрос отмечен woocommerce, я предполагаю, что это - продукт CPT, созданный woocommerce плагином Wordpress. Этот ответ не применяется если это не так.

Категории продуктов не являются нормальными категориями, они - пользовательская таксономия, созданная специально для продуктов, который просто маркирован как "Категории".

Необходимо пройти woocommerce документацию для нахождения некоторой функции, которая сделала бы это для Вас, если Вы не находите ничего, что можно попробовать альтернативное решение. Для этого сначала необходимо знать название таксономии. Можно скопировать его из URL в браузере при посещении экрана редактирования категорий в бэкенде. Затем можно использовать wp_get_post_terms получить условия.

9
19.02.2020, 22:04
  • 1
    Привет, спасибо за Ваш ответ. И да woocommerce продукт в Wordpress. Хорошо, я собираюсь попробовать его, каков $args для wp_get_post_terms? я вижу "таксономию", и "args" являются дополнительными, таким образом, я собираюсь попробовать только идентификатором. –  Rodrigo Sanz 23.11.2012, 21:37
  • 2
    Это не будет работать только с идентификатором. Таксономия по умолчанию post_tag. Необходимо передать название таксономии туда. Это будет работать без $args но можно использовать его, если Вы хотите. Это предназначено для переопределения значений по умолчанию, как объяснено на этой странице –  Mridul Aggarwal 24.11.2012, 15:17
  • 3
    , который я протестировал, но он не производит categiry, в котором находится продукт. Я использовал это, <? $term_list php = wp_get_post_terms (1345, 'product_tag', массив ("поля" => "все")); print_r ($term_list);?> –  Rodrigo Sanz 25.11.2012, 18:03
  • 4
    это производит это: Массив ([0] => stdClass Объект ([term_id] => 104 [имя] => новый [краткий заголовок] => новый [term_group] => 0 [term_taxonomy_id] => 104 [таксономия] => product_tag [описание] => Hola qué tal esto es una descripción? [родитель] => 0 [количество] => 8)) Массив ([0] => stdClass Объект ([term_id] => 104 [имя] => новый [краткий заголовок] => новый [term_group] => 0 [term_taxonomy_id] => 104 [таксономия] => product_tag [описание] => Hola qué tal esto es una descripción? [родитель] => 0 [количество] => 8)) –  Rodrigo Sanz 25.11.2012, 18:05
  • 5
    И в массиве нет категории? Я делал что-то не так? –  Rodrigo Sanz 25.11.2012, 18:06

Я ответил на свой собственный вопрос, эту работу для меня:

<?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');

?>

Спасибо Mridul Aggarwal для Вашей справки

9
19.02.2020, 22:04
  • 1
    Вы могли, по крайней мере, upvote ответ Mridul, если Вы не думаете, что это достаточно завершено, чтобы быть принятым как корректное. Очевидно это получило Вас на правильном пути. –  Johannes Pille 27.11.2012, 21:34

Теги

Похожие вопросы