WordPress тест, если пользовательский термин таксономии является потомком другого термина - PullRequest
3 голосов
/ 05 июня 2011

как я могу проверить, является ли страница таксономии / термина wordpress дочерним по отношению к другому термину?Например, если у меня есть таксономия для «категорий портфеля», которая является иерархической.мои термины высшего уровня - «цифровой» и «печатный».под печатью у меня есть "телевидение" .. и несколько других.если я нахожусь в «телевизионном» архиве, is_tax () - это истина, как is_tax («телевидение»), но не is_tax («печать»).в основном я хотел бы, чтобы «телевидение» и его братья и сестры вели себя так, а дети «цифровых» - иначе.

возможно ли это или лучше всего обслуживать отдельные таксономии?

Ответы [ 3 ]

7 голосов
/ 28 июня 2011

На этой странице произнесите архив-портфолио-категорий.php или просто архив.php. Я считаю, что вы можете использовать глобальную переменную $ term, чтобы определить, находитесь ли вы на дочерней странице.Например:

<?php 
$term = get_term_by( 'slug', get_query_var( 'term' ) );
if($term->parent > 0) 
{ 
// THIS IS A CHILD PAGE 
// .. DO STUFF HERE.. 
} 
else 
{ 
// THIS IS THE PARENT PAGE
// .. DO OTHER STUFF HERE..
}
?>
1 голос
/ 11 декабря 2013

Глобальный термин $ не отображается.Но вы можете использовать глобальный $ wp_query, вы можете проверить в таксономии - {tax} .php:

<?php
global $wp_query;
var_dump($wp_query);
?>

Мы видим $ wp_query-> queried_object-> parent и:

<?php
global $wp_query;
var_dump($wp_query);
if($wp_query->queried_object->parent == '0' && is_tax()){
    //parent
}else {
    //child
}
?> 
1 голос
/ 06 ноября 2012

Это должно работать, если у вас есть только 2 элемента верхнего уровня с слагами «печать» и «цифровой».Этот код также будет работать для более глубоких деревьев таксономии.

$current_tax = wp_get_post_terms( $post->ID, 'portfolio-categories', array() );
$current_tax_id = $curcat[0]->term_id;

$digital = get_term_by( 'slug', 'digital', 'portfolio-categories', OBJECT );
$print = get_term_by( 'slug', 'print', 'portfolio-categories', OBJECT );

$sub_digital = get_term_children( $digital->term_id, 'portfolio-categories' );
$sub_print = get_term_children( $print->term_id, 'portfolio-categories' );

// this variable will hold the current top-level taxonomy term ID.
$parent_cat_id = in_array($current_tax_id, $sub_digital) ? $digital->term_id : $print->term_id;

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

...