如果类别在父类别中?

时间:2011-01-24 作者:Саша Стефановић

我有功能,检查什么是最主要的职位类别。我有这样的分类树

Foo
-bar
--foobar
cat2
如果post在foobar中,那么我的函数post\\u is\\u in\\u descendant\\u category会显示“foo”,我可以用样式foo设置该post的样式。css。我现在想要的是,为类别页面“foobar”设置样式时,也能做到这一点。\\u类别中的Wordpress函数仅适用于帖子。

那么,我的代码if ( in_category( \'foo\' ) || post_is_in_descendant_category( get_term_by( \'name\', \'foo\', \'category\' )) || is_category(\'56\') ) 不适用于子类别。

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

如果我理解正确,您的“post\\u is\\u in\\u descendant\\u category”函数将检查一篇文章是否是某个类别的后代,并且您希望检查一个类别是否为descendant。如果是,则将此函数添加到函数中。php

function is_desc_cat($cats, $_post = null) {
  foreach ((array)$cats as $cat) {
    if (in_category($cat, $_post)) {
      return true;
    } else {
      if (!is_int($cat)) $cat = get_cat_ID($cat);
      $descendants = get_term_children($cat, \'category\');
      if ($descendants && in_category($descendants, $_post)) return true;
    }
  }

return false;
}
使用方法如下:

if (is_desc_cat("foo")) {
  // use foo.css
} else {
  // use default.css
}
希望这有帮助。

SO网友:Rarst

Try this:

$cat_id = $wp_query->get_queried_object_id();
$parents = explode( \'/\', get_category_parents( $cat_id, false ) );

if( in_array( \'foo\', $parents ) ) {

}
elseif( in_array( \'cat2\', $parents ) ) {

}
else {


}
结束

相关推荐

WordPress删除wp_List_Categories中最后一项的分隔符

我正在尝试删除最后一个分隔符(通常是<br/> 标记,但我将其从wp\\u list\\u categories的最后一个链接更改为“/”)。基本上我想要这个:类别1//类别2//类别3//看起来像这样:类别1//类别2//类别3以下是我当前使用的代码:<?php $cat_array = array(); $args = array( \'author\' => get_the_author_meta(\'id\'),&#x