在一个页面上WP_Query两次 - 每页没有得到所需的帖子


WP_Query twice on one page - not getting the desired posts per page

我有一个自定义帖子类型,其中包含一个 ACF 复选框来定义帖子是否被推荐。我想在一个页面上显示 6 个精选帖子和 6 个非精选帖子,因此创建了 2 个带有单独参数的WP_Query循环。虽然特色和非特色的分离是有效的,但该页面总共只显示 6 个帖子,我不确定如何解决这个问题?

我的代码:

        <?php
            $args1 = array(
            post_type       => 'fairs',
            posts_per_page  =>  -1,
            showposts       => 6 ,
            meta_key        => 'start',
            orderby         => 'meta_value_num',
            order           => 'ASC'
            );
            $new1 = new WP_Query($args1);?>
            <?php while ($new1->have_posts()) : $new1->the_post();?>
                <?php $field = get_field( 'wa_feature', get_the_ID() ); if ( true == $field ):?>   
                    Featured Posts
                <?php endif;?>
            <?php endwhile;  wp_reset_postdata();?>
        <?php
            $args2 = array(
            post_type       => 'fairs',
            posts_per_page  =>  -1,
            showposts       => 6 ,
            meta_key        => 'start',
            orderby         => 'meta_value_num',
            order           => 'ASC'
            );
            $new2 = new WP_Query($args2);?>
            <?php while ($new2->have_posts()) : $new2->the_post();?>
                <?php $field = get_field( 'wa_feature', get_the_ID() ); if ( false == $field ):?>   
                    Non-featured Posts
               <?php endif;?>
            <?php endwhile;?>

你的WP_Query不对。你($args1 = $args2)执行两个完全相同的查询,并期望从它们那里得到不同的结果。此外,您将meta_key放入查询参数中,但没有告诉要比较的内容以及如何比较。

根据您选择的类型,正确的语法,如果您的元文件名为featured并且查询可以是:

args1 = array(
  'post_type'       => 'fairs',
  'posts_per_page'  =>  -1,
  'meta_key'        => 'featured',
  'meta_value'      => true //or 1, or 'yes` depending of ACF type you have choose 
  'orderby'         => 'meta_value_num',
  'order'           => 'ASC'
);
args1 = array(
  'post_type'       => 'fairs',
  'posts_per_page'  =>  -1,
  'meta_key'        => 'featured',
  'meta_value'      => false//or 0, or 'no` 
  'orderby'         => 'meta_value_num',
  'order'           => 'ASC'
);

或者,如果此featured字段仅存在于featured帖子中,则

args1 = array(
  'post_type'       => 'fairs',
  'posts_per_page'  =>  -1,
  'orderby'         => 'meta_value_num',
  'order'           => 'ASC'.
  'meta_query' => array(
     array(
        'key'     => 'featured',
        'compare' => 'EXISTS',
     ),
   )
);
args1 = array(
  'post_type'       => 'fairs',
  'posts_per_page'  =>  -1,
  'orderby'         => 'meta_value_num',
  'order'           => 'ASC'.
  'meta_query' => array(
     array(
        'key'     => 'featured',
        'compare' => 'NOT EXISTS',
     ),
   )
);

检查 ACF 查询或 Codex 以获取正确的 sintax。

你的论点应该被引用:

array(
    'post_type'       => 'fairs',
    'posts_per_page'  => 6,
    'meta_key'        => 'start',
    'orderby'         => 'meta_value_num',
    'order'           => 'ASC'
);

数组键可以是整数或字符串。在 PHP array() 文档中阅读更多内容。

在这种情况下,您也应该只使用posts_per_page(并删除showposts,在WP 2.1中被posts_per_page取代)。