Таксономия, подаксономия, дочерняя таксономия продукта 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;
}
Но, пожалуйста, помогите найти вторую по значимости таксономию.
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]), прежде чем пытаться получить к нему доступ
Предупреждение: Это будет работать только для продуктов, которые находятся в одном сроке. Эта функция выполняет не обрабатывать несколько терминов