我最近更新博客有个需求,就是想让不同分类的目录显示不同的菜单,这里可以使用2个函数:

get_the_category();
cat_is_ancestor_of($cat1, $cat2 );

get_the_category

这个函数可以获取当前页面文章的目录,一般用法:

$categories = get_the_category();  //是个数组,用【0】就行了
$cur_cat = $categories[0];  //cur_cat就可以随你操作了

$categories[0] 是一个对象,它有如下参数,我们需要的是cat_ID

object(stdClass)#310 (17) {
    ["term_id"]=>
    &int(6)
    ["name"]=>
    &string(10) "familylife"
    ["slug"]=>
    &string(10) "familylife"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(6)
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    &string(0) ""
    ["parent"]=>
    &int(0)
    ["count"]=>
    &int(208)
    ["object_id"]=>
    int(7729)
    ["filter"]=>
    string(3) "raw"
    ["cat_ID"]=>
    &int(6)
    ["category_count"]=>
    &int(208)
    ["category_description"]=>
    &string(0) ""
    ["cat_name"]=>
    &string(10) "familylife"
    ["category_nicename"]=>
    &string(10) "familylife"
    ["category_parent"]=>
    &int(0)
  }

cat_is_ancestor_of( $cat1, $cat2 )

这个函数可以判断某个目录(cat1)是不是其他目录(cat2)的祖先

汇总

所以,我们只需要这两个函数就能完成我们的工作了

$categories = get_the_category();  
if(cat_is_ancestor_of(85, $categories[0]->cat_ID) or is_category(85))
{
   wp_nav_menu( array( 'depth' => 2, 'theme_location' => 'secondary', 'container' => false ) ); 
}