“特色”项目的多重循环返回错误的帖子

时间:2012-12-31 作者:Steve

我有一个页面模板,首先获取页面内容,作为管理工具的输入,然后是一个自定义帖子类型的帖子循环。

我需要把这个循环分成两个最新的帖子(“特色”),然后是剩下的所有帖子的第二个循环。我试图使用WP Codex中的代码,from this page 但第二个循环是contents of the page, 不是rest of the first loop. 我搞砸了什么?

 <!-- get the contents of the WP page first -->
        <?php while (have_posts()) : the_post(); ?>
            <!-- page title -->
            <h1 class="category-title"><?php the_title(); ?></h1>   
            <!-- the subtitle is the content of the page -->
            <div class="category-subtitle"><?php the_content(); ?></div>
        <?php endwhile; ?>
        <? wp_reset_query(); ?>
        <!-- end page content -->

        <div class="articles">
        <?php       
            $args = array( \'post_type\' => \'onourradar\', \'posts_per_page\' => 2, \'orderby\' => \'menu_order\', \'order\' => \'ASC\'  );
            $my_query = new WP_Query($args);
            while ($my_query->have_posts()) : $my_query->the_post();
            $do_not_duplicate[] = $post->ID;
            //$event_date = get_post_meta($post->ID, \'event_date\', true); 
            //$clean_date = date(\'F j Y\',strtotime($event_date)); 
        ?>
           <div class="listing">
                <?php the_post_thumbnail( \'thumb\', array(\'class\' => \'featured-image\') ); ?>
                <div class="listing-name"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></div>
                <div class="subhead"><?php the_field(\'teaser\'); ?></div>
                <div class="excerpt"><?php the_excerpt(); ?></div>
            </div>

        <?php endwhile;  ?>  

        <?php if (have_posts()) : while (have_posts()) : the_post(); 
          if (in_array($post->ID, $do_not_duplicate)) continue;
        ?>
           <div class="listing-name"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></div>
        <?php endwhile; endif; ?>
编辑:第二个循环似乎有效,不确定这是否正确。赞赏的建议:

 <?
            $args = array( \'post_type\' => \'onourradar\', \'posts_per_page\' => -1, \'orderby\' => \'menu_order\', \'order\' => \'ASC\', \'post__not_in\' => $do_not_duplicate );
            $my_query = new WP_Query($args);
            while ($my_query->have_posts()) : $my_query->the_post();
        ?>

2 个回复
最合适的回答,由SO网友:Ed Burns 整理而成

您的第二个循环很好,因为它可以工作-尽管这样做可能更有效:

$args = array( \'post_type\' => \'onourradar\', \'posts_per_page\' => -1, \'orderby\' => \'menu_order\', \'order\' => \'ASC\', \'offset\' => \'2\');
$my_query = new WP_Query($args);
while ($my_query->have_posts()) : $my_query->the_post();
不同之处在于,do\\u not\\u重复查询并不是一种非常有效的方式(尽管有时是必要的)。使用偏移量绝对是一种更好的方法。

SO网友:s_ha_dum

如果我没看错你的问题,你只需要一个问题。这里是裸体技术。

$q = array(\'posts_per_page\'=>10);
$a = new WP_Query($q);
$count = 0;
while ($a->have_posts()) {
  $a->the_post();
  echo $post->ID."</br>";
  $count++;
  if ($count == 2) break;
}
echo \'##########################</br>\';
while ($a->have_posts()) {
  $a->the_post();
  echo $post->ID."</br>";
  $count++;
}
我认为您应该能够将该示例合并到您自己的代码中。您可以打印前两篇帖子(或任何您想要的数字),如果不重置查询,您可以在稍后停止的地方继续。

结束

相关推荐

wp-query problem with author

我运行查询:SELECT post_author FROM `wp_posts` 看到很多帖子都有作者值1。然后执行搜索。php如下所示:$args = array( \'author\' => 1, ); $the_query = new WP_Query( $args ); 没有结果!怎么了?