wordpress左侧根据主菜单,自动显示子导航菜单栏目

22
11
根据后台设置的导航菜单
获取当前菜单的子菜单,若果没有子菜单,则返回到父级菜单,显示左侧导航。
参考http://www.webfinder.cn/archives/163.html
返回的是数组,在函数中对数组进行了处理。
对一些不在导航菜单中显示分类进行了单独处理。
目前只处理了一级下拉菜单的情况。有需要的可以进行完善。
一篇文章有多个分类情况$queried_object_id有时候会出现并不是预期的值。希望高手指教。
只需要在分类页面对应位置写上
[php]<?php echo get_sub_menu(); ?>[/php]
对应的格式可以修改下面的代码。
[php]
function get_sub_menu($menu_name=’primary’,$num=’0′){

global $wp_query;
//获取当前页面分类信息
$cat = get_the_category(); $cat = $cat[0];
$queried_object_id = (int) $wp_query->queried_object_id;

$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

$menuitems = wp_get_nav_menu_items( $menu->term_id, array( ‘order’ => ‘DESC’ ) );
$parent_id=false;
$home_page_id = $home_page_id = (int) get_option( ‘page_for_posts’ );
//单页面$queried_object_id匹配为当前分类的ID
if(is_single()){
$queried_object_id=$cat->cat_ID;
}

foreach ($menuitems as $item){

if ($item->object_id==$queried_object_id && (
‘taxonomy’ == $item->type || ‘post_type’ == $item->type || ‘custom’ == $item->type
)) {
//此处只判断一级下拉菜单的情况
if($item->menu_item_parent==0 ){
$parent_id = $item->ID;
break;
}else{
$parent_id = $item->menu_item_parent;
break;
}
}
}

if ($parent_id!==false) {
foreach ($menuitems as $item){

if ($item->menu_item_parent==$parent_id) {
$sub_menu[]=(array)$item;
}
if (!empty($sub_menu)&&$item->ID==$parent_id) {
$output .='<div class="lsmainlf1">
<div class="lsmainlf1top">’;
$output .= $item->title.'</div>
</div>
<div class="lsmainlf2">
<ul>’;
}
}
}else{
$sub_menu = ”;
}

if(!empty($sub_menu)){
foreach ($menuitems as $item){

if ($item->ID==$parent_id) {
$output .='<div class="lsmainlf1">
<div class="lsmainlf1top">’;
$output .= $item->title.'</div>
</div>
<div class="lsmainlf2">
<ul>’;
}
}

foreach ($sub_menu as $k=>$v){
if ($v[‘menu_item_parent’]==0) {
$output .='<div class="lsmainlf1">
<div class="lsmainlf1top">’;
$output .= $v[‘title’].'</div>
</div>
<div class="lsmainlf2">
<ul>’;
}else{
$output .= ‘<li><a href="’.$v[‘url’].’"’;
if($v[‘object_id’]==$queried_object_id){ $output .= ‘ class="cur"’;}
$output .= ‘>’.$v[‘title’].'</a></li>’;
}
}
$output .= ‘</ul>
</div>
<div class="lsmainlf3"></div>’;
}elseif($cat->cat_name){
$cat_ID=$cat->cat_ID;
$output .='<div class="lsmainlf1">
<div class="lsmainlf1top">’;
$output .= $cat->cat_name.'</div>
</div>
<div class="lsmainlf2">
<ul>’;

$output .= ‘<li><a href="’.get_category_link( $cat_ID).’"’;
$output .= ‘ class="cur"’;
$output .= ‘>’.$cat->cat_name.'</a></li>’;
$output .= ‘</ul>
</div>
<div class="lsmainlf3"></div>’;

}else{

$output .='<div class="lsmainlf1">
<div class="lsmainlf1top">’;
$output .= get_the_title().'</div>
</div>
<div class="lsmainlf2">
<ul>’;

$output .= ‘<li><a href="’.get_category_link( $cat_ID).’"’;
$output .= ‘ class="cur"’;
$output .= ‘>’.get_the_title().'</a></li>’;
$output .= ‘</ul>
</div>
<div class="lsmainlf3"></div>’;
}
return $output;
}
[/php]

发表评论

电子邮件地址不会被公开。 必填项已用*标注