在主页上显示多个帖子,不包括某些类别

时间:2016-04-23 作者:empec

我目前正在运行WordPress 4.5,其WooTheme名为The Morning After. 我决定在这里和那里改变一些事情,但遇到了一些关于posts_per_page 中使用的参数WP_Query 对象目的是显示多个帖子(3或4个帖子)并忽略类别Featured articles.

$args = array(
    \'posts_per_page\'   => 2,
    \'category__not_in\' => get_cat_ID(\'Featured articles\')
);

$query = new WP_Query($args);

while ( $query->have_posts() ) { 
    $query->the_post();
    echo \'<li>\' . get_the_title() . \'</li>\';
};
我做错了什么?结果是4个职位,包括该类别中的职位Featured articles.

1 个回复
SO网友:bravokeyl

如果您正在更改main query 然后使用pre_get_posts 筛选而不是WP_Query.

add_action(\'pre_get_posts\',\'wpse224610_alter_query\');
function wpse224610_alter_query($query){
      $cat_id = get_cat_ID(\'Featured articles\');
      $exclude_cat_id = -$cat_id;
      if( !is_admin() && $query->is_main_query() ){
         $query->set( \'cat\', $exclude_cat_id );
         $query->set( \'posts_per_page\', 4 );
      }
}
主回路将是

if( have_posts() ):
    while( have_posts() ): the_post();
       //The loop
    endwhile;
endif;
检查返回值$cat_id , 是0还是Featured articles 类别id?检查类别名称的拼写是否正确,因为它是在管理?

根据您的代码,我假设您正在尝试进行二次循环,但正如您所说的,这是主循环,请使用上述过滤器。

Read more