Подтвердить что ты не робот

Как получить все дочерние страницы родительской страницы в Wordpress?

Пример:

About
--- Menu 1
--- Menu 2
--- Menu 3
--- Menu 4

если я нахожусь на странице... у меня есть подстраницы. но, если войти в Меню 1, все страницы исчезнут

Что мне нужно, так это постоянно видеть родительские страницы

В настоящее время у меня есть этот код

<? if (is_page()) {
    $g_page_id = $wp_query->get_queried_object_id();
    wp_list_pages("depth=4&title_li=&child_of=".$g_page_id."&sort_column=menu_order");
   }
?>

Спасибо!

Решено

Я использую это и отлично работаю!

<?php
if ( is_page() ) :
    if( $post->post_parent ) :
        $children = wp_list_pages( 'title_li=&child_of='.$post->post_parent.'&echo=0' );
    else;
        $children = wp_list_pages( 'title_li=&child_of='.$post->ID.'&echo=0' );
    endif;
    if ($children) : ?>
        <div class="title">
            <?php
            $parent_title = get_the_title( $post->post_parent );
            echo $parent_title;
            ?>
            <span></span>
        </div>
        <ul>
            <?php echo $children; ?>
        </ul>
    <?php
    endif;
endif;
?>
4b9b3361

Ответ 1

Здесь вы идете. Немного поздно для автора, но люди придут сюда для ответа еще: -)

<?php 
// determine parent of current page
if ($post->post_parent) {
    $ancestors = get_post_ancestors($post->ID);
    $parent = $ancestors[count($ancestors) - 1];
} else {
    $parent = $post->ID;
}

$children = wp_list_pages("title_li=&child_of=" . $parent . "&echo=0");

if ($children) {
?>

    <ul class="subnav">
        <?php 
            // current child will have class 'current_page_item'
            echo $children; 
        ?>
    </ul>

<?php 
} 
?>

Ответ 2

Самый простой способ справиться с этим - с помощью get_children(). Это в значительной степени делает то, что вы ожидаете. Возвращает дочерние страницы родительской страницы.

get_children() по сути является оберткой для класса WP_Query.

Вы можете использовать это так...

$child_args = array(
    'post_parent' => 1, // The parent id.
    'post_type'   => 'page',
    'post_status' => 'publish'
);

$children = get_children( $child_args );

Если вы хотите вернуть дочерних элементов текущего сообщения, вы можете передать $post->ID как 'post_parent'.

Документация для get_children()

Документация для WP_Query