如何在直接父页面上显示子子页面?

时间:2014-10-24 09:28:15

标签: wordpress

我有一个非常正常的页面层次结构,如下所示:

- Main page
- - Child page
- - Child page 2
- - Child page 3
- - - Sub child page
- - - Sub child page 2
- - Child page
- - Child page
- - - Sub child page
- Main page 2
- - Child page
...

当我在任何页面上时,我想在侧栏上显示包含所有子页面的菜单,而不是主页面。 这个,我可以用另一个答案得到的这组论点来做:

<?php 
$child_of_value = ( $post->post_parent ? $post->post_parent : $post->ID );
$depth_value = ( $post->post_parent ? 2 : 1 );
$args = array( 
        'depth' => $depth_value,
        'sort_column' => 'menu_order', 
        'sort_order' => 'asc',
        'title_li' => '',
        'child_of' => $child_of_value,
        'echo' => 0
);

      $children = wp_list_pages($args);
?>

这样,在菜单中显示属于同一主页面的所有子页面。问题在于子子页面。我只想在我的直接父页面中显示它们,但是与所有其他页面一起显示它们。

因此,例如,如果我在没有任何其他孩子的子页面中,它将显示如下:

- - Child page <---
- - Child page 2
- - Child page 3
- - Child page
- - Child page

如果我在第三个,它会显示如下:

- - Child page
- - Child page 2
- - Child page 3 <---
- - - Sub child page
- - - Sub child page 2
- - Child page
- - Child page

同样,如果我在子子页面中,我会显示相同的内容。 有什么方法可以实现这个修改参数吗?

1 个答案:

答案 0 :(得分:2)

不只是修改参数,而是可以通过CSS实现。如果你像你一样操纵深度,它将获得菜单中所有链接的深度。这对于深度为零是好的,但是当你达到深度1&amp;除此之外,它将显示所有有孩子的页面的子菜单。

相反,这里是生成菜单的代码,该菜单列出了所有深度的顶级页面的所有子页面(包括孙子,曾孙等),然后可以根据当前页面隐藏或显示:

<?php
    global $post;
    $parent_id = wp_get_post_parent_id( $post->ID );
    $top_parent = $post->ID;
    while( $parent_id ){
        if( $parent_id > 0 ){
            $top_parent = $parent_id;
        }
        $parent_id = wp_get_post_parent_id( $parent_id );
    }
    $args = array( 
        'sort_column' => 'menu_order', 
        'sort_order' => 'asc',
        'title_li' => '',
        'child_of' => $top_parent,
        'echo' => 1
    );
    $children = wp_list_pages($args);
?>

在样式表中,您可以使用以下内容:

.page_item_has_children > .children {display: none;} /*hides the submenu*/
.page_item_has_children.current_page_item > .children,
.page_item_has_children.current_page_ancestor > .children {display: block;} /*shows the submenu for the current page or when on its subpages /*