Как отобразить дочерние категории родительской категории текущей категории?

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' // показывать пустые категории
        ) );
} ?>

Этот код отображает как родительские, так и дочерние категории.

0
Все ответы на вопрос 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'
        ) );
}
} ?>
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>';
        }
}
?>
5 сент. 2016 г. 06:55:40