是否可以在Wordpress中仅显示直接子页面。例如,我有页面和子页面结构,如:
Page 1
Page 11
Page 111
Page 112
Page 12
Page 12
Page 2
Page 21
Page 22
Page 221
Page 222
所以在上面的例子中,我想列出第1页的所有子页面 - 第11页,第12页,第13页。但我不想列出Page 111和Page 112,这是Wordpress的默认行为。< / p>
有没有办法这样做?
答案 0 :(得分:0)
见这里。
http://codex.wordpress.org/Function_Reference/wp_nav_menu
在此功能中,您可以使用深度来定义级别。将其设置为1以显示顶级页面,并将其设置为2以显示顶级和直接子级别页面,依此类推。感谢
答案 1 :(得分:0)
下面,
实际上,我发现了http://codex.wordpress.org/Function_Reference/get_pages
$packages = get_pages('child_of=' . get_the_ID() .'&hierarchical=0&parent=' . get_the_ID());
假设,我正在浏览第1页。需要注意的是,child_of =和parent =具有相同的ID。
答案 2 :(得分:0)
如果要构建菜单,则可以使用wp_nav_menu()
函数中的“ depth”参数,将其设置为“ 1”以获得直接的同级。但是,get_pages()
函数中没有“ depth”参数。我构建了一个短代码来显示页面上的子菜单(而不是导航菜单),并且通过检查所检索页面的父级,将自身限制为直接同级或直接子级。希望这会有所帮助:
[in_page_submenu级别=“兄弟姐妹”]
// two possible values of a "level" parameter in the shortcode args:
// "siblings" and "children"
add_shortcode('in_page_submenu', function ($args) {
global $post;
$this_page_id = $post->ID;
$parent = $post->post_parent;
$children = false;
$siblings = false;
if ( $args['level'] == "siblings" || !isset($args['level']) ) {
$siblings = true;
$query_arr = array(
'child_of' => $parent,
'exclude' => $this_page_id
);
} else if ($args['level'] == "children") {
$children = true;
$query_arr = array('child_of' => $post->ID);
}
$pages = get_pages($query_arr);
$html = "<div>";
foreach($pages as $p) {
$parent_id = wp_get_post_parent_id($p);
$display = true;
if ($children && $parent_id != $this_page_id) {
$display = false;
}
if ($siblings && $parent_id != $parent) {
$display = false;
}
if ($display) {
// do something with $html var
}
}
$html .= "</div>";
return $html;
});