我有个习惯WP_Query
类似这样:
$query_args = array(
\'post_type\' => \'post\',
\'cat\' => 12,
\'posts_per_page\' => 5
);
$custom_query = new WP_Query($query_args);
现在,我需要将此查询的结果分为3组,第一组只包含第一篇帖子,第二组包含第二篇和第三篇帖子,然后第三组包含第四篇和第五篇帖子。
进行此拆分的原因是,每个集合中的条目将具有不同的外部和内部标记,外部标记如下所示:
<div class="column" data-span="6">1st Post Here</div>
<div class="column" data-span="3">2nd + 3rd Posts Here</div>
<div class="column" data-span="3">4th + 5th Posts Here</div>
有没有办法在第一个分区打印第一篇文章,暂停查询,然后在第二个分区继续查询,暂停,然后在第三个分区继续查询?
SO网友:Aniruddha Gawade
您可以有条件地编写html,使用if
语句来检查索引并在此基础上打印html。
类似于:
$custom_query = new WP_Query($query_args);
$i = 1;
while($custom_query->have_posts()): the_post();
if($i == 1){?>
<div class="column" data-span="6">1st Post Here</div> <?php }
elseif($i == 2 || $i == 3){?>
<div class="column" data-span="6">1st Post Here</div>
<?php }
else{?>
<div class="column" data-span="6">1st Post Here</div>
<?php }
endwhile;
如果唯一的区别是
data-span
在html中,可以跳过第二个条件并使用
<div class="column" data-span="<?php echo ($i==1)?6:3;?>">your Post Here</div>
SO网友:Patrick Oliveira
尝试以下操作:
您将使用变量$gottenposts保存打印的帖子ID。然后,当您想要显示除已打印的帖子之外的其他帖子时,您将进行新的查询。
您的第一个查询
<?php $gottenposts = array(); //here you will save the posts ids
$args = array(\'post_type\' => \'post\', \'posts_per_page\' => 6);
$query = new WP_Query($args);
if($query->have_posts()) :
while($query->have_posts()) :
$query->the_post();?>
//your HTML code here
<?php endwhile; endif; ?>
您的第二个查询
<?php $args = array(\'post_type\' => \'post\', \'posts_per_page\' => -1, \'post__not_in\' => $gottenposts ?>
//ETC...
希望这有帮助!
SO网友:Porosh Ahammed
我想你不能用一个查询来实现这一点。您必须对post number使用多个查询。
使用自定义字段段塞会更好。
$slider = new WP_Query(array(
\'post_type\' => \'post\',
\'posts_per_page\' => 5,
\'cat\' => 12,
\'post_status\' => \'publish\',
\'meta_query\' => array(
array(
\'key\' => \'slider_key\',
\'value\' => \'slider\',
\'compare\' => \'IN\'
)
)
));