为什么‘如果其他’不起作用呢?

时间:2012-10-16 作者:deathlock

我身上有这个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;
}

1 个回复
最合适的回答,由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和;鼻涕虫

结束

相关推荐

Headers already sent by

Warning: Cannot modify header information - headers already sent by (output started at /forums/vb/search/searchcontroller/version.php:91) in /wp-includes/functions.php on line 862 我不知道这个错误意味着什么。有人能帮帮我吗?函数第862行。php是。。。setcookie( \'wp-settings-time-\'