Как отобразить дочерние категории родительской категории текущей категории?
5 сент. 2016 г., 04:27:00
Просмотры: 23.7K
Голосов: 2
Я пытаюсь отобразить список категорий в текстовом виджете с поддержкой PHP. На страницах дочерних категорий мне нужно получить ID родительской категории текущей категории, а затем использовать его для вывода списка всех дочерних категорий этой категории, исключая текущую категорию.
Я попробовал следующий код, но он не работает:
<?php if (is_category( )) {
$thiscat = get_category( get_query_var( 'cat' ) );
$catid = $thiscat->cat_ID;
$parent = $catid->category_parent;
$catlist = get_categories(
array(
'child_of' => $parent, // дочерние категории от родителя
'orderby' => 'id', // сортировка по id
'order' => 'DESC', // порядок по убыванию
'exclude' => $catid, // исключить текущую категорию
'hide_empty' => '0' // показывать пустые категории
) );
} ?>
Этот код отображает как родительские, так и дочерние категории.

jrcollins
571
Все ответы на вопрос
2
0
Теперь я понимаю, что есть более простой способ сделать это:
<?php if (is_category( )) {
$thiscat = get_category( get_query_var( 'cat' ) );
$catid = $thiscat->cat_ID;
$parent = $thiscat->category_parent;
if (!empty ($parent) ) {
//страницы дочерних категорий
$catlist = get_categories(
array(
'child_of' => $parent,
'orderby' => 'id',
'order' => 'DESC',
'exclude' => $catid,
'hide_empty' => '0'
) );
}
} ?>

jrcollins
571
5 сент. 2016 г. 11:08:30
0
Это, кажется, работает:
<?php if (is_category( )) {
$thiscat = get_category( get_query_var( 'cat' ) );
$catid = $thiscat->cat_ID;
//создаем массив из get_category_parents
$parent_list = (explode (',',get_category_parents($catid,false,',')));
$parent_name = ($parent_list[0]);
$parent = get_cat_ID( $parent_name );
$catlist = get_categories(
array(
'child_of' => $parent,
'orderby' => 'id',
'order' => 'DESC',
'exclude' => $catid,
'hide_empty' => '0'
) );
//проверяем, является ли текущая категория родительской
if ( $catid == $parent ) {
echo '<span>это страница родительской категории</span>';
}
else {
echo '<span>это страница дочерней категории</span>';
}
}
?>

jrcollins
571
5 сент. 2016 г. 06:55:40
Похожие вопросы
3
ответов
1
ответов