我身上有这个header.php
.
它检查页面是否位于主页/frontpage上,是否位于“gamenews”的类别/子类别/或是否位于“hobbynews”的类别/子类别/或是否具有“hobbynews”的类别。
基本上,如果它位于主页/frontpage上,则不会输出任何内容。
另一方面,如果它出现在gamenews上,它会输出一些东西。如果是在《霍比新闻》(hobbynews)上,它会输出另一个东西。您可以在下面看到详细信息。我在那里使用自定义函数(is_category_or_sub
).
<?php if ( is_home() || is_front_page() ) { ?>
<?php } elseif ( is_category_or_sub(\'gamenews\') || has_category(\'gamenews\') ) { ?>
<ul id="sections">
<?php $category = get_category_by_slug( \'gamenews\' );
wp_list_categories(array(
\'child_of\' => $category->term_id,
\'title_li\' => \'\',
\'hide_empty\' => 0,
\'orderby\' => \'count\',
\'walker\' => new WPSE67791_Walker_Category
)); ?>
</ul><!-- #sections -->
<?php } elseif ( is_category_or_sub(\'hobbynews\') || has_category(\'hobbynews\') ) { ?>
<ul id="sections">
<?php $category = get_category_by_slug( \'hobbynews\' );
wp_list_categories(array(
\'child_of\' => $category->term_id,
\'title_li\' => \'\',
\'hide_empty\' => 0,
\'orderby\' => \'count\',
\'walker\' => new WPSE67791_Walker_Category
)); ?>
</ul><!-- #sections -->
<?php } ?>
现在,第一个检查(is\\u home/is\\u frontpage)工作正常。第二个(gamenews上的那个)也是如此。
然而,最后一个(“hobbynews”)不起作用。
每次我访问有这个要求的页面(在“hobbynews”的类别/子类/类别上),它都会显示游戏新闻中应该显示的内容。我想在《霍比新闻》(hobbynews)上显示的那个没有显示出来。
为什么会这样?我一直在尝试重新排序,尝试使用嵌套if等,但它仍然不起作用,而且非常令人困惑。。。
<小时>
EDIT:
这是我的
is_category_or_sub
, 位于
functions.php
:
function is_category_or_sub( $cat_slug = get_category_by_slug ) {
foreach (get_the_category() as $cat) {
if ($cat_slug || cat_is_ancestor_of($cat_slug->term_id, $cat)) return true;
}
return false;
}
最合适的回答,由SO网友:Mridul Aggarwal 整理而成
假设您使用的函数是\\u category\\u或\\u sub(),如http://valendesigns.com/wordpress/is-category-or-subcategory-wp-function/
该函数将category id作为参数,而不是slug。当类型转换为整数时,此处的字符串“gamenews”变为0,这是其他所有类别的祖先。你能试着把功能代码改成这个吗-
// If is category or subcategory of $cat
if (!function_exists(\'is_category_or_sub\')) {
function is_category_or_sub($cat = 0) {
if(is_numeric($cat)) {
$cat_id = $cat;
} elseif(is_string($cat)) {
$cat = get_term_by(\'slug\', $cat, \'category\');
$cat_id = $cat->term_id;
} else {
return false; // neither id nor slug
}
foreach (get_the_category() as $cat) {
if ($cat_id == $cat->cat_ID || cat_is_ancestor_of($cat_id, $cat)) return true;
}
return false;
}
}
此功能现在支持id和;鼻涕虫