我想创建一个子菜单,列出父页的子级,最多两级。我有一些代码,但我需要高度定制它。我不明白the codex 足以弄清楚如何做到这一点。这就是我需要的代码。
例如,菜单层次结构为:
当在“家长”页面上时,代码如下所示:
<ul>
<li><a href="/child-1/">Child 1</a></li>
<li>Child 2
<ul class="child">
<li><a href="/child-2/">Overview</a></li>
<li><a hres="/child-2-1/">Child 2.1</a></li>
</ul>
</li>
</ul>
请注意li
“与子项”没有链接,它的第一个子项有其父项与标题“概述”的链接。这是我目前拥有的代码:
<?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) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
此代码输出:<ul>
<li><a href="/child-1/">Child 1</a></li>
<li><a class="page_item_has_children" href="/child-2/">Child 2</a>
<ul class="child">
<li><a hres="/child-2-1/">Child 2.1</a></li>
</ul>
</li>
</ul>
EDIT
我一直在做进一步的搜索,发现了一些可能有用的代码,唯一的问题是,它输出所有页面(而不仅仅是子页面)。结果都比我需要的高出一个级别(请参见概述的位置)。此代码:
<?php
$Pages = wp_list_pages(\'title_li=&echo=0&depth=1\');
$InnerPages = wp_list_pages(\'child_of=\'.($post->post_parent != false ? $post->post_parent : $post->ID).\'&title_li=&echo=0\');
$Title = ($post->post_parent != false) ? trim(get_the_title($post->post_parent)) : trim(wp_title(\'\', false));
$Link = ($post->post_parent != false) ? trim(get_the_title($post->post_parent)) : trim(get_permalink(\'\', false));
if($Title != \'\')
$Pages = str_replace($Title.\'</a></li>\',
$Title.\'</a>\'.
\'<ul id="test"><li><a href="\'.$Link.\'">Overview</a></li>\'.$InnerPages.\'</ul></li>\',
$Pages);
echo $Pages;
unset($Pages, $InnerPages);
?>
输出:<ul>
<li><a href="/home/">Home</a></li>
<li><a href="/parent/">Parent</a>
<ul id="test">
<li><a href="/parent/">Overview</a></li>
<li><a href="/child-1/">Child 1</a></li>
<li><a href="/child-2/">Child 2</a>
<ul class="child">
<li><a hres="/child-2-1/">Child 2.1</a></li>
</ul>
</li>
</ul>
</li>
</ul>