Как отобразить список дочерних страниц родительской страницы в WordPress?

3 июл. 2014 г., 14:40:40
Просмотры: 23.8K
Голосов: 3

У меня следующая структура меню.

Лечение
 -Красота
  --Услуги
  --Товары
 -Хирургия
 -Мытье

Я следовал этой ссылке: Как отобразить список дочерних страниц для родительской страницы в WordPress

Но мне не нужны подстраницы страницы "Красота". Я хочу получить только подстраницы "Лечение".

1
Комментарии

Совет: пожалуйста, прочитайте описание тегов перед их использованием.

Pieter Goosen Pieter Goosen
3 июл. 2014 г. 14:52:33
Все ответы на вопрос 2
9

Добавьте этот код в ваш файл functions.php. Ниже приведено объяснение кода.

function wpb_list_child_pages() { 

    global $post; 

    $id = ( is_page() && $post->post_parent ) ? $post->post_parent : $post->ID;
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $id . '&echo=0' );
    // можно добавить `&depth=1` в конце, чтобы отображался только один уровень

    if ( $childpages ) {    
        $string = '<ul>' . $childpages . '</ul>';
    }

    return $string;
}

add_shortcode('wpb_childpages', 'wpb_list_child_pages');

Объяснение

Код проверяет, имеет ли страница родителя или сама является родительской. Если это родительская страница, то она отображает дочерние страницы, связанные с ней. Если это дочерняя страница, то отображаются все другие дочерние страницы того же родителя. Наконец, если это просто страница без дочерних или родительских страниц, код ничего не делает. Просто добавьте этот шорткод [wpb_childpages] на страницу, где должны отображаться её дочерние страницы.

Мой тестовый вывод, который сработал на локальном хосте:

Test1

-t1

--tt1

-t2

и вывод, который отображается, когда я добавил этот шорткод на страницу Test1:

t1

t2

3 июл. 2014 г. 14:51:39
Комментарии

Но он также загружает подстраницы подстраниц. Мне нужны только подстраницы родительской страницы.

Arshad Hussain Arshad Hussain
3 июл. 2014 г. 14:53:13

@ArshadHussain: ок.. тогда добавь &depth=1 вместе с &echo.. смотри мою обновленную строку в моем посте.

Zammuuz Zammuuz
3 июл. 2014 г. 14:58:33

все еще не работает.

Arshad Hussain Arshad Hussain
3 июл. 2014 г. 15:09:08

что отображается? до сих пор показываются услуги, продукты?? но у меня сработало..

Zammuuz Zammuuz
3 июл. 2014 г. 15:11:44

пожалуйста, посмотрите мой ответ.. я обновил его с моим выводом.

Zammuuz Zammuuz
3 июл. 2014 г. 15:13:46

валя, это работает..

Arshad Hussain Arshad Hussain
3 июл. 2014 г. 15:37:50

@ArshadHussain: если мой ответ вам помог, пожалуйста, отметьте его как решение.. в любом случае, рад слышать, что ваша проблема решена.. :)

Zammuuz Zammuuz
4 июл. 2014 г. 06:12:33

Извините, но мой рейтинг слишком низкий, чтобы проголосовать. В будущем я учту это

Arshad Hussain Arshad Hussain
4 июл. 2014 г. 06:43:09

@ArshadHussain: я не имел в виду голосование.. я просто просил отметить этот ответ как решение для вашего вопроса. Зеленая галочка. Так это поможет и другим :)

Zammuuz Zammuuz
4 июл. 2014 г. 06:44:40
Показать остальные 4 комментариев
0

Если вам нужны только подстраницы текущей страницы, используйте этот код:

function wpb_list_child_pages() {

    global $post; 

    // Проверяем, является ли текущая страница родительской и имеет ли ID
    if ( is_page() && $post->ID )    
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=2' );

    // Если есть дочерние страницы, формируем список
    if ( $childpages ) {    
         $string = '<ul>' . $childpages . '</ul>';
    }

    return $string;
}

// Регистрируем шорткод для вызова функции
add_shortcode('wpb_childpages', 'wpb_list_child_pages');
13 апр. 2017 г. 12:52:58