将父页面添加到子页面列表

时间:2013-05-09 作者:AndrettiMilas

这段代码可以很好地显示父页面的子页面,同时查看父页面和子页面。它不适用于current_page_item 在查看CSS类时将其发送给父级(并且只有它,对在子级上应用它不感兴趣)-有什么建议吗?

<ul class="subpages">
<?php
  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");
  if ($children) {
$parent_title = get_the_title($post->post_parent);?>
<li><a href="<?php echo get_permalink($post->post_parent) ?>"><?php echo $parent_title;?></a></li>
  <?php echo $children; ?>
  <?php } ?>
</ul>

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

如果我理解你想要什么,那么让它工作起来就比应该的要复杂得多。

$ancestors = array();
$ancestors = get_ancestors($post->ID,\'page\');
$parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID;
if (!empty($parent)) {
  $pages = get_pages(array(\'child_of\'=>$parent));
  if (!empty($pages)) {
    $page_ids = array();
    foreach ($pages as $page) {
      $page_ids[] = $page->ID;
    }
    $children = wp_list_pages("include=".$parent.\',\'.implode(\',\',$page_ids)."&echo=1");
    echo \'<ul>\'.$children.\'</ul>\'; 
  }
}
您必须获得所有页面的列表,并将其传递到include 参数The basic technique is listed in the Codex. 事实上,上述内容几乎是复制品。

那会给你current_page_ancestor 在所有祖先页面和current_page_parent 仅在直接父级上。这应该足够了。

如果您注意到我在页面列表中包含了顶级父级。您的代码有时只会这样做。我不知道这是不是故意的,但我把它包括进去了。您应该能够添加或删除该页面,以匹配所需的任何逻辑。

SO网友:Ravinder Kumar

解决您的问题尝试一下

1.get_page()

2.get_pages()

    <style>
    .current-menu-item a {
        color: red;
    }
    </style>
    <ul class="subpages">
    <?php
        if($post->post_parent){
            $children = get_pages("child_of=".$post->post_parent);
            $parent_title = get_the_title($post->post_parent);
            $link = get_permalink($post->post_parent);
        }
        else{
            $children = get_pages("child_of=".$post->ID);
            $parent_title = get_the_title($post->ID);
            $link = get_permalink($post->ID);
            $parent_page = $post->ID;
        }
        if ($children) {
        ?>
            <li <?php if( !empty($parent_page) && $parent_page==$post->ID){echo \'class="current-menu-item"\';} ?>><a href="<?php echo $link; ?>"><?php echo $parent_title;?></a></li>
            <?php 
                foreach( $children as $post ) : setup_postdata($post); 
            ?>
                    <li <?php if(is_page($post->ID)){echo \'class="current-menu-item"\';} ?>>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </li>
            <?php 
                endforeach;
            ?>
        <?php 
        }
        ?>
    </ul>

3.Note:Remove css style at top of my code when your test complete and apply your own css code.

结束

相关推荐