Как проверить в WordPress, есть ли у категории подрубрики. А затем, в зависимости от их наличия вывести тот или иной результат.
Для проверки записей, а не разделов, с таким же условием, написана другая статья.
Существует множество способов проверить есть ли у раздела подрубрики. Мы сделаем проверку через следующую функцию.
function check_if_category_has_child () {
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
) );
return $children;
}
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
) );
return $children;
}
Дальше, там где необходимо провести проверку вставлям этот участок:
// Только для категорий и только тех где есть дочерние рубрики
if ( is_category() and check_if_category_has_child() ) {
} else {
// Иначе ничего не выводим или выводим что-то здесь.
}
if ( is_category() and check_if_category_has_child() ) {
} else {
// Иначе ничего не выводим или выводим что-то здесь.
}
Одновременно проверяем, чтобы это был только раздел.
Спасибо за статью, она очень помогла)
успехов в разработке!
а как быть с таксаномиями ?
Попробуйте выше в коде, где проверка на is_category() заменить на is_tax()
Если сработает, буду очень приблогадарен, закину на пивасик
К сожалению не сработало ((
пробывал так:
Код надо обернуть в теги code иначе не отправится.
if (is_tax('buildings', 'b1') and check_if_category_has_child()) {
echo 'Б-1';
} else {
echo 'Б-2';
}
?>
Проверил. Всё работает.
Судя по тому, что внутри is_tax идет перечисление, то код используется не верно. Этот код нужен для того, чтобы находясь в таксономии скажем buildings, узнать, есть ли у нее дочерние категории.
Синтаксис немного переписал, он несколько устарел)
Вот код:
{
$term = get_queried_object();
$children = get_terms(
$term->taxonomy, [
'parent' => $term->term_id,
'hide_empty' => false
]
);
return $children;
}
Вот проверка:
$child = isTaxHasChild();
$count = count($child);
echo 'У этой категории есть дочерние рубрики:<br>';
$i = 0;
foreach ($child as $item) {
echo $item->name;
$i++;
if ($i < $count)
echo ' - ';
}
} else {
echo 'Ничего нет';
}
И если эту проверку положить в шаблон таксономии и открыть страницу любой из этих таксономии, то выведет результат. У меня например такой:
Люди - Фильмы
У меня показало и вывело 2 дочерние категории. А если перейти внутрь одной из этих категории, то будет указано: