我有一个页面模板,首先获取页面内容,作为管理工具的输入,然后是一个自定义帖子类型的帖子循环。
我需要把这个循环分成两个最新的帖子(“特色”),然后是剩下的所有帖子的第二个循环。我试图使用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();
?>
最合适的回答,由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重复查询并不是一种非常有效的方式(尽管有时是必要的)。使用偏移量绝对是一种更好的方法。