将帖子类别名称隐藏在可能被提及的任何位置

时间:2017-07-21 作者:user124348

有没有办法将类别名称排除在帖子所属类别的任何列表上?我想要一个“无声”类别。它存在,来自它的帖子显示在循环中,但在任何帖子所属类别的列表中都没有提到它。

1 个回复
SO网友:kero

是的,您可以使用wp_get_object_terms 筛选以从使用默认WordPress方法的任何列表中删除隐藏类别,如wp_get_post_categories().

add_filter(\'wp_get_object_terms\', \'wpse_remove_unwanted_category\', 10, 4);
function wpse_remove_unwanted_category($terms, $object_ids, $taxonomies, $args) {
    // we\'re only interested in category, if this is another taxonomy
    if ($args[\'taxonomy\'] !== \'category\') {
        // return early
        return $terms;
    }

    // 34 and 1509 are ids of categories we want to remove
    $remove_categories = array(34, 1509);
    $filtered_terms = array_filter($terms, function($term) use ($remove_categories) {
        // if term_id is in the array, filter it out (aka remove from array)
        return ( ! in_array($term->term_id, $remove_categories));
    });
    return $filtered_terms;
}
但是,此过滤器将从许多列表中删除不需要的类别,而不仅仅是前端的类别。

结束

相关推荐

Categories' hierarchy in URL

我目前正在处理的网站中的帖子都有多个层次分类。例如:Source - Books -- Moby Dick -- Sherlock Holmes 永久链接设置为/%category%/%postname%/. 然而,一篇文章的URL并不包括所有的子类别——我得到的只是site.com/source/books/*postname*, 尽管这篇文章在来源上没有分类,但只在书籍+白鲸上。有人能帮我找出如何调整这种行为吗?非常感谢。