使用wordpress中的query_posts()过滤某个类别的帖子?

时间:2014-05-26 22:38:38

标签: php wordpress

使用query_posts()过滤wordpress主查询的类别时,以下查询会附加到主查询中:

AND ( wp_term_relationships.term_taxonomy_id IN (6,19,4501,5482,7401) ).

我添加的代码是:

query_posts( $query_string . '&cat=4496,6,19' );

我只需要'4496,6,19'类别的帖子,而不是'6,19,4501,5482,7401'

2 个答案:

答案 0 :(得分:0)

尝试query_posts( $query_string . '&cat=4496,6,19,-6,-19,-4501,5482,7401' );

参考:JamesVL wordpress.org

您还可以在this link

中尝试以下操作

答案 1 :(得分:0)

您应该不惜一切代价避免使用query_posts。这不仅仅是我,它直接来自于手抄本。我引用

  

此功能不适用于插件或主题。如后面所述,有更好的,更高性能的选项来改变主查询。 query_posts()是一种过于简单化和有问题的方法来修改页面的主要查询,方法是用新的查询实例替换它。它是低效的(重新运行SQL查询)并且在某些情况下会彻底失败(特别是在处理帖子分页时)。

只需使用pre_get_posts

即可实现所需
function my_home_category( $query ) {
    if ( $query->is_home() && $query- >is_main_query() ) {
        $query->set( 'cat', '4496,6,19' );
    }
}
add_action( 'pre_get_posts', 'my_home_category' );

将此添加到您的functions.php中。这只会在主页上显示所选的类别。您可以根据需要更改条件