使用orderby = rand时拆分Wordpress循环

时间:2012-12-22 10:22:58

标签: php wordpress

我真的很感激以下方面:

  • 我有一个Wordpress页面,使用query_posts('cat=10&tag=parties&orderby=rand');

  • 显示帖子
  • 我想做的是将列表分成两半并在中间插入文本。理想情况下,文本将来自Wordpress中页面的WYSIWYG编辑器。我想我需要两套“php查询帖子”,第二个查询不包括第一个帖子?

有人能帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

而不是使用query_posts为什么不使用WP_Query?这将为您提供一个数组,您可以查询其大小,然后您可以有一个递增的计数器,一旦它到达中途标记,您插入任何你想要的东西并继续前进。

像这样设置:

// first, run the main loop to get the text editor content
while(have_posts()) : the_post(); 
  // we just assign it to a variable at this point without printing it
  $content_to_insert = get_the_content(); 
endwhile;

// now we set up the query to get out all the party posts
$parties_query = array( 
  'cat' => 10, 
  'tag' => 'parties', 
  'orderby' => 'rand', 
  'posts_per_page' => -1 
);

// NB. you will not get ALL your results unless you use 'posts_per_page' or 'showposts' set to -1

// Now run a new WP_Query with that query
$parties = new WP_Query($parties_query);

// get the halfway point - needs to be a whole number of course!
$half = round( sizeof($parties)/2 );

// this is our counter, initially zero
$i = 0

while($parties->have_posts()) : $parties->the_post(); ?>

<?php if ($i == $half) : ?>

// we are halfway through - print the text!
<?php echo apply_filters('the_content', $content_to_insert); ?>

<?php else : ?>

// render your party stuff
// you can use tags reserved for use in the loop, eg.

<div class="party">
  <h2><?php the_title(); ?></h2>
</div>

<?php endif; ?>

<?php $i++; endwhile; ?>

希望有效。昨晚是圣诞晚会的一个深夜。