如何从最近发布的帖子、最近的评论和类别小工具中排除类别?

时间:2014-02-26 作者:Iurie

我使用bellow函数(感谢@helgatheviking!)到exclude categories 从wordpress循环。它工作得很好-选定类别的帖子被排除在主博客列表页面、类别列表页面和存档的循环之外,but not 来自最近的帖子,而不是侧边栏中最近的评论。如何扩展此代码对它们的作用?

add_action(\'pre_get_posts\', \'wpa_31553\' );

function wpa_31553( $wp_query ) {

    //$wp_query is passed by reference.  we don\'t need to return anything. whatever changes made inside this function will automatically effect the global variable

    $excluded = array(272);  //made it an array in case you need to exclude more than one

    // only exclude on the front end
    if( !is_admin() ) {
        set_query_var(\'category__not_in\', $excluded);
        //which is merely the more elegant way to write:
        //$wp_query->set(\'category__not_in\', $excluded);
    }
}
UPDATE:有一点需要澄清的是,排除的类别还没有从categories小部件中消失。当我用鼠标点击打开它们时,这些类别中的所有帖子都消失了。我希望它们也从Categories小部件中消失。

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

我用Advanced Category Excluder (ACE)插件,除了类别小部件之外-这里帮助了@BradDalton代码。ACE有一个自己的“最近的评论”小部件,隐藏排除的类别,但404页上有一个小问题,该小部件继续显示有评论的排除类别,因此我将其(404页)重定向到我的网站主页404 to Start 插件。

谢谢大家的帮助!

UPDATE

Advanced Category Excluder插件没有选择哪些用户角色被排除在特定类别之外的选项,因此我禁用了它,还禁用了最近的评论小部件,目前我无法排除所需的类别。总之,唯一的解决方案是@helgatheviking和@Brad Dalton函数。

SO网友:TheDeadMedic

原作者所说的“这只是更优雅的写作方式”并不完全正确。

set_query_var() 将始终覆盖主查询,而如果实际使用:

$wp_query->set( \'category__not_in\', $excluded );
。。。它适用于query_posts(), 例如最近发布的小部件。

SO网友:helgatheviking

根据@TheDeadMedic,我已经调整了代码。希望它现在可以处理所有非管理员查询。

add_action(\'pre_get_posts\', \'wpa_136017\' );

function wpa_136017( $wp_query ) {

    //$wp_query is passed by reference.  we don\'t need to return anything. whatever changes made inside this function will automatically effect the global variable

    $excluded = array(272);  //made it an array in case you need to exclude more than one

    // only exclude on the front end
    if( !is_admin() ) {
        $wp_query->set(\'category__not_in\', $excluded);
    }
}

SO网友:Brad Dalton

这就是我将用于从categories小部件中排除类别的内容

function widget_categories_args_filter( $cat_args ) {

$cat_args[\'exclude\'] = array(1,2,3);

return $cat_args;
}

add_filter( \'widget_categories_args\', \'widget_categories_args_filter\', 10, 1 );
没有从最近的帖子或最近的评论小部件中排除类别的过滤器。您可以使用此解决方案作为指导来重建小部件http://wordpress.org/support/topic/recent-posts-widget-with-category-exclude

结束

相关推荐

检查自定义分类是否有带有GET_CATEGORIES()的帖子

我正在使用get_categories 列出我的分类法的所有术语“genre“,但我有另一种分类法叫做”brands“。在品牌页面中(taxonomy-brands.php) 我需要返回品牌和相关流派的所有帖子。For example, I have a taxonomy page for Ferrari:. 品牌名称:法拉利..类型:红色、黄色But I also have a taxonomy page for Wolkswagen:. 品牌名称:Wolkswagen..类型:蓝色、绿色问题是,法拉利