【问题标题】:Include Sticky Posts with Custom Query Posts包含带有自定义查询帖子的粘性帖子
【发布时间】:2020-10-13 07:11:37
【问题描述】:

我正在使用 WordPress 中的自定义查询,基本上,我正在显示 ID 为 4 的类别的 4 个最新帖子 我的查询如下:-

$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);

这工作正常,但在这里我有一个额外的要求。我也想添加置顶帖子,即无论这些帖子是最近的还是旧的,帖子都将置顶,并且总posts_per_page 应始终为4,包括置顶帖子和最近的帖子。

例如,如果没有置顶帖子,那么我将显示 4 个最新帖子且没有置顶帖子。但是如果有 1 个置顶帖子,那么就会有 1 个置顶帖子和 3 个最近的帖子,总共 4 个帖子。

我应该在查询中进行哪些修改,以便分页也能正常工作?谢谢。

【问题讨论】:

    标签: wordpress customization


    【解决方案1】:

    您只需在帖子中选择置顶帖子选项即可。

    然后自动运行您的方案。 示例:

    1. 如果您选择了一个置顶帖子并且您已经设置了每页 4 的帖子,那么wp_query 将首先获取置顶帖子,然后显示其他 3 个帖子。

    2. 如果您没有选择置顶帖子并且您设置了每页 4 的帖子,那么 wp_query 将获取仅有的 4 个没有置顶帖子的帖子。

    这是 WordPress 的默认行为。

    【讨论】:

      【解决方案2】:

      检查此代码

      $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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        相关资源
        最近更新 更多