在自定义查询中包含粘滞帖子

时间:2020-10-13 作者:Ali Bhutta

我在WordPress中使用自定义查询,基本上,我显示了一个类别中ID为4和query 具体如下:-

$args = array(
  \'post_type\' => \'post\' ,
  \'orderby\' => \'date\' ,
  \'order\' => \'DESC\' ,
  \'posts_per_page\' => 4,
  \'cat\'         => \'3\',
  \'paged\' => get_query_var(\'paged\'),
  
); 
$q = new WP_Query($args);
这很好,但这里我有一个额外的要求。我想添加粘性帖子,也就是说,无论这些帖子是最近的还是旧的,帖子都会贴在最上面,每页的帖子总数应该始终为4,包括粘性帖子和最近的帖子。

e、 g如果没有粘性帖子,那么我将显示4篇最近的帖子,并且没有粘性帖子。但如果有1个贴子,那么将有1个贴子和3个最近的贴子,总共4个贴子。

我应该在查询中进行哪些修改?非常感谢。

1 个回复
SO网友:Hector

$sticky = get_option( \'sticky_posts\' );

$args = array(
  \'post_type\'           => \'post\' ,
  \'orderby\'             => \'date\' ,
  \'order\'               => \'DESC\' ,
  \'posts_per_page\'      => 4,
  \'cat\'                 => \'3\',
  \'paged\'               => get_query_var(\'paged\'),
  \'post__in\'            => isset( $sticky[0] ) ? $sticky[0] : array(),
  \'ignore_sticky_posts\' => 1,
  
); 
$q = new WP_Query($args);
上面的代码将只包括第一个粘性帖子,如果它不存在,它将获得正常帖子。

如果要显示所有现有的粘性帖子,请使用以下代码:

$args = array(
  \'post_type\'           => \'post\' ,
  \'orderby\'             => \'date\' ,
  \'order\'               => \'DESC\' ,
  \'posts_per_page\'      => 4,
  \'cat\'                 => \'3\',
  \'paged\'               => get_query_var(\'paged\'),
  \'ignore_sticky_posts\' => false,
  
); 
$q = new WP_Query($args);