仅在某些模板上从列表下的文件中排除类别

时间:2020-10-30 作者:joycegrace

这是本帖的后续问题Exclude a category from the filed under list

给出的解决方案对我很有用。然而,我很好奇如何有条件地让它工作?具体来说,仅在类别档案上?E、 g.它仍然会说“我不知道”;存档依据:A、B、X“;在单篇文章模板上。但它会说;存档依据:A,B“;关于档案。

在Genesis工作,如果有帮助的话。

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

可以在应用逻辑修改类别之前添加条件语句。例如,我添加了一个检查,如果我们不在类别存档页面上,它将退出并返回未修改的类别列表:

// Add the filter to \'the_category\' tag.
add_filter( \'the_category\', \'the_category_filter\', 10, 2 );
function the_category_filter( $thelist, $separator = \' \' ) {

    // Bail if this is not the category archive page.
    // https://developer.wordpress.org/reference/functions/is_tax/
    if ( ! is_tax( \'category\' ) ) {
        return $thelist;
    }

    // list the IDs of the categories to exclude
    $exclude = array(4,5);
    // create an empty array
    $exclude2 = array();

    // loop through the excluded IDs and get their actual names
    foreach($exclude as $c) {
             // store the names in the second array
             $exclude2[] = get_cat_name($c);
    }

    // get the list of categories for the current post
    $cats = explode($separator,$thelist);
    // create another empty array
    $newlist = array();

    foreach($cats as $cat) {
        // remove the tags from each category
        $catname = trim(strip_tags($cat));

        // check against the excluded categories
        if(!in_array($catname,$exclude2))

        // if not in that list, add to the new array
        $newlist[] = $cat;
    }

    // return the new, shortened list
    return implode( $separator, $newlist );
}

相关推荐

Metabox types list

例如,在下面的代码段中,有一些类型用于自定义metabox输入字段,如text和textarea。所以,我想学习其他类型。我在谷歌上也搜索了它。但我不能。例如,我想学习电子邮件类型。array( \'name\' => \'Instagram\', \'desc\' => \'You should write Instagram link here\', \'id\' => $prefix . \'text-instagram\',