Таксономия, подаксономия, дочерняя таксономия продукта woocommerce


Привет, мне нужно получить основную таксономию и суб таксономию продукта в woocommerce. я знаю, как получить подробную информацию о таксономии .123 is product id .

$terms = get_the_terms(123, 'product_cat');

Я также знаю, как получить название таксономии

 echo $terms[0]->name 

Но моя потребность в том, чтобы: Nokia 3110 - мой мобильный телефон. Так что это под electronics-> mobiles -->ordinary-->Single sim-->nokia 3110

id is 123 .

На странице редактирования продукта в панели администратора nokia 3110 находится под одной sim-картой [на самом деле одна sim-карта находится под электроника->мобильные телефоны->обычные ]. Но я проверил только проверку одной sim-карты коробка, не проверенная электроника, мобильные телефоны, обычные и т.д.

Мне нужно, чтобы из этого идентификатора я получил в основном, в каком таксоне находится моя nokia 31110. Ответ в том, что Это связано с электроникой. И мне также нужна вторая таксономия, то есть мне нужно распечатать ее под мобильными телефонами. Как получить эти сведения

Спасибо.

Я знаю, как получить самую верхнюю таксономию

function get_term_top_most_parent($term_id, $taxonomy){
    // start from the current term
    $parent  = get_term_by( 'id', $term_id, $taxonomy);
    // climb up the hierarchy until we reach a term with parent = '0'
    while ($parent->parent != '0'){
        $term_id = $parent->parent;

        $parent  = get_term_by( 'id', $term_id, $taxonomy);
    }
    return $parent;
}

Но, пожалуйста, помогите найти вторую по значимости таксономию.

Author: tom, 2016-01-13

1 answers

Основываясь на этом ответе , вот моя функция для получения всех ваших терминов в массиве:

function get_term_ancestors($post_id, $taxonomy){
    // Declare the array where we are going to store the terms
    $ancestors = array();
    // start from the current term
    $parent  = array_shift(get_the_terms($post_id,$taxonomy));
    // climb up the hierarchy until we reach a term with parent = '0'
    while ($parent->parent != '0'){
        $term_id = $parent->parent;

        $parent  = get_term_by( 'id', $term_id, $taxonomy);
        $ancestors[] = $parent;
    }
    return $ancestors;
}

Используйте следующим образом:

$ancestors = get_term_ancestors(123,'product_cat');

Таким образом, с помощью этой функции ваш термин верхнего уровня будет:

$ancestors[count($ancestors)-1] // or array_pop($ancestors);

И вашим вторым родителем верхнего уровня будет

$ancestors[count($ancestors)-2] // or another array_pop($ancestors)

Пожалуйста, также обратите внимание, что вы должны проверить isset($предки[количество($предки)-2]), прежде чем пытаться получить к нему доступ

Предупреждение: Это будет работать только для продуктов, которые находятся в одном сроке. Эта функция выполняет не обрабатывать несколько терминов

 2
Author: Sladix, 2017-04-13 12:37:49