我的设置如下:
- 自定义帖子类型称为“客户”
- 2级导航(单独,第二级仅显示当前页面是否有父/子)
- 一个名为Clients的页面
- 客户端帖子有一个自定义模板(single-clients.php)
我想让任何“客户”发布客户页面的子页面/子页面,以便导航在客户端页面上正确显示(它会自动列出子页面),并且可以轻松添加新客户端。
我找到了几个脚本,但没有一个完全符合我的要求。
这是我的子导航代码的主要部分:
<nav id='content_clients_navig' class='navig_general'>
<ul>
<?php
global $post;
//determine which navig should be displayed
//if post has parent, display parent navig
//else display the current post's navig
$navig_display = ($post->post_parent) ? $post->post_parent : $post->ID;
$menu_args = array(
'child_of' => $navig_display,
'title_li' => ''
);
wp_list_pages( $menu_args );
?>
</ul>
</nav>
我通过在我的模板文件中插入这段代码来调用它:
<?php if (has_subnavig()) get_template_part( 'part', 'subnavig' ); ?>
这是has_subnavig:
function has_subnavig()
{
global $post;
if( is_page() && $post->post_parent){
return true;
}else{
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
};
if($children){
return true;
}else{
return false;
};
}
答案 0 :(得分:0)
首先,您必须将has_subnavig
更改为以下内容,以便在查看父级或客户端帖子时也显示子区域:
function has_subnavig()
{
global $post;
if ( is_page() && $post->post_parent ) {
// post is child post
return true;
} else if ( $post->post_type == 'clients' || $post->post_name == 'clients' ) {
// post is clients parent or clients post type
return true;
} else {
// determine if post has children
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ( $children ) {
return true;
} else {
return false;
};
};
}
其次,重要的是要知道,如果子导航应该是客户列表,还是标准子页面列表。这就是为什么我们会问,post_type
或post_name
是clients
。我的子导航代码的主要部分可能是这样的:
global $post;
// determine which navig should be displayed
if ( $post->post_type == 'clients' || $post->post_name == 'clients' ) {
// display clients navig if page is clients parent
// or post_type is clients
$menu_args = array(
'child_of' => 0,
'post_type' => 'clients',
'post_status' => 'publish'
);
} else {
// if post has parent, display parent navig
// else display the current post's navig
$navig_display = ($post->post_parent) ? $post->post_parent : $post->ID;
$menu_args = array(
'child_of' => $navig_display,
'title_li' => ''
);
}
wp_list_pages( $menu_args );