Использование get_the_terms() не возвращает дочерние термины определенной родительской категории, применяемые к продукту WooCommerce

#php #wordpress #woocommerce #product #taxonomy-terms

#php #wordpress #woocommerce #продукт #таксономия-термины

Вопрос:

После многочисленных попыток и около 50 статей я прихожу к выводу, что это невозможно, если только не найдется волшебник, готовый вырвать мне страницу из их книги заклинаний.

На странице продукта я хочу получить текущий идентификатор продукта и передать его функции get_the_terms(), также предоставляя таксономию ‘product_cat’ и, наконец, указать родительскую категорию.

В родительской категории, которую мы передаем, выбирается только одна дочерняя категория. Таким образом, это должно возвращать только один термин.

Я хочу сделать что-то вроде этого:

 $terms = get_the_terms( the_ID(), 'product_cat', array( 'parent' => 84 ) );
foreach ($terms as $term) {
    $termID = $term->term_id;
    $name   = $term->name;
    $slug   = $term->slug;

    echo $name;
}
 

Однако это возвращает множество результатов, я перепробовал кучу других подобных запросов, но этот был бы самым красивым, если кто-нибудь может пролить свет, это было бы здорово!

Ответ №1:

Просто get_the_terms() не допускает дополнительных аргументов, вместо этого используйте wp_get_post_terms() , а также вы должны использовать get_the_ID() вместо the_ID() like

 $terms = wp_get_post_terms( get_the_id(), 'product_cat', array( 'parent' => 84 ) );
 

Теперь это должно работать лучше.

Комментарии:

1. Ударь по деньгам! Я был так близок! Большое спасибо, что поделились!