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


У меня следующий формат меню.

Treatment
 -Beauty
  --Services
  --Products
 -Surgery
 -washing

Я перешел по следующей ссылке: Как отобразить список Дочерних страниц Для Родительской страницы в WordPress

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

Author: Rarst, 2014-07-03

2 answers

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

function wpb_list_child_pages() { 

    global $post; 

    if ( is_page() && $post->post_parent )    
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' .$post->post_parent . '&echo=0' );
    else
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

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

    return $string;
}

add_shortcode('wpb_childpages', 'wpb_list_child_pages');

Объяснение

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

Обновление для остановки на первом уровне

if ( is_page() && $post->post_parent )    
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0&depth=1' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=1' );

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

Тест1

-t1

--tt1

-t2

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

T1

T2

 2
Author: Zammuuz, 2014-09-01 20:55:17

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

function wpb_list_child_pages() {

    global $post; 

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');
 0
Author: Mike, 2017-04-13 09:52:58