排除博客页面中的帖子类别

时间:2015-04-01 作者:Alan Wong

我有两个链接

“新闻”是所有新闻帖子的所在地,“博客”是其他帖子的所在地,只是想在博客页面中排除“新闻”类别

我使用代码

$news = new WP_query (\'category_name =-news\')
而且它不起作用

基本上,我想告诉wordpress,我希望所有的帖子都进入“博客”页面,而不是归类为“新闻”的帖子

2 个回复
SO网友:Brad Dalton

在您的功能中。php文件,使用pre_get_posts 并将下面代码中的-1替换为要从帖子页面中排除的类别ID。

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'cat\', \'-1\' );
    }
}
add_action( \'pre_get_posts\', \'exclude_category\' );

SO网友:Nicolai Grossherr

使用参数catcategory__not_in:

$query = new WP_Query( \'cat=-1234\' );
减号表示排除,使用ID。

$query = new WP_Query( array( \'category__not_in\' => array( 1234 ) ) );
也使用ID。

使用get_cat_ID() 通过名称或get_category_by_slug() 要通过slug执行,后者返回一个对象。

结束

相关推荐

仅对主查询运行POSTS_WHERE和POSTS_JOIN

使用pre_get_posts 胡克,我可以$query 作为论据。但在posts_where 和posts_join hook,我收到的是相应的子句,而不是查询。问题是钩子正在每个查询上运行,而不仅仅是主查询。给定以下代码,该代码将在页面运行的每个查询上执行一次:add_filter(\'posts_join\', \'my_join\'); function my_join($join) { echo \'lala\'; return $join; } 如何判断查询是否是主查询,使其