My Goal:
这有点棘手,所以请耐心听我说。我在WordPress网站上有一个三层页面组织:
Tier 1
- Tier 2
- Tier 2
- Tier 3
- Tier 3
- Tier 2
- Tier 2
- Tier 3
- Tier 2
如果我使用wp_list_pages
,我可以得到一个页面列表。我只需要显示某些页面。我把它分成了四组。用户可能在Tier 1
页、没有子页的Tier 2
页、有子页的Tier 2
页或Tier 3
页。
一级期望结果:
- Tier 2
- Tier 2
- Tier 2
- Tier 2
- Tier 2
二级期望结果(如果Page没有子节点):
- Tier 2 (<- Active Page)
- Tier 2
- Tier 2
- Tier 2
- Tier 2
第2层期望结果(如果Page有子节点):
- Tier 2
- Tier 2 (<- Active Page)
- Tier 3
- Tier 3
- Tier 2
- Tier 2
- Tier 2
三级期望结果
- Tier 2
- Tier 2
- Tier 3 (<- Active Page)
- Tier 3
- Tier 2
- Tier 2
- Tier 2
<标题>我的尝试:
<?php
if ($post->post_parent) { //SUB PAGE
$depth = 1;
if ( count(get_pages('child_of=' . $post->ID)) ) { $depth=0; }
$children = wp_list_pages("sort_column=post_date&title_li=&child_of=".$post->post_parent."&echo=0&depth=1");
}
else { //TOP PAGE
echo "Level 1";
$children = wp_list_pages("sort_column=post_date&title_li=&child_of=".$post->ID."&echo=0&depth=1");
} ?>
<ul id="subNav">
<?php echo $children; ?>
</ul>
当前结果上面的代码几乎可以工作。Tier 1
工作,Tier 2
没有子工作。但Tier 3
与子显示所有的子,而不仅仅是当前页面的子。有人告诉我,这可以用CSS完成,如果我真的有必要,我会这样做,但我真的喜欢一个完整的PHP解决方案。谢谢你的帮助!
有了这个我有第4级的工作,希望它会帮助你,调整它编辑$parent = $ancestors[0];等等,你也可以取消注释//echo,看看发生了什么,在哪里:)关于
<?php if(is_page()){
$ancestors = get_post_ancestors($post);
if (count($ancestors) == 0) {
$children = wp_list_pages("sort_column=post_date&title_li=&child_of=".$post->ID."&echo=0&depth=1");
//echo 'test0';
}elseif (count($ancestors) == 1) {
$parent = $ancestors[0];
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=" .$parent. "&echo=0");
//echo 'test1';
}elseif (count($ancestors) == 2) {
$parent = $ancestors[1];
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=" .$parent. "&echo=0");
//echo 'test2';
}elseif (count($ancestors) == 3) {
$parent = $ancestors[2];
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=" . $parent. "&echo=0");
//echo 'test3';
}elseif (count($ancestors) == 4) {
$parent = $ancestors[3];
$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=" . $parent . "&echo=0");
//echo 'test4';
}
?>
<?php if($children){ ?>
<ul class="leftmenu">
<?php echo $children; ?>
</ul>
<?php } }?>