因为这与
How to reduce the database query-es
然后,我将为您概述一个可能的解决方案:
有四个类似的循环
1) 1 post && offset=0
2) 4 posts && offset=1
3) 5 posts && offset=1
4) 6 posts && offset=1
因此,您的主要查询将是
$args=array(
\'post_type\' => \'stiri\',
\'posts_per_page\' => 7,
\'taxonomy\' => \'stire\',
\'stire\' => \'articole-speciale\'
);
$recentPosts = new WP_Query($args);
使用该选项:
$recentPosts->current_post
给你这个职位(0,1,...)
在循环中$recentPosts->rewind_posts()
倒回帖子,$recentPosts->next_post()
增加位置,
您可以使用4个立柱和偏移量1为循环尝试此结构:
<?php $recentPosts->rewind_posts();?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<?php if($recentPosts->current_post>0 && $recentPosts->current_post<5):?>
...
<?php endif; ?>
<?php endwhile; ?>
或
<?php $recentPosts->rewind_posts();?>
<?php $recentPosts->next_post(); // to get offset 1 ?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<?php if($recentPosts->current_post<5):?>
...
<?php endif; ?>
<?php endwhile; ?>
或
<?php $recentPosts->rewind_posts();?>
<?php $recentPosts->current_post=0; // to get offset 1 ?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<?php if($recentPosts->current_post<5):?>
...
<?php endif; ?>
<?php endwhile; ?>
您也可以在其他循环中使用此选项,在这些循环中,您可以更改
if
-满足您的需求。
ps: 最后,您应该使用
<?php wp_reset_postdata(); ?>
恢复全局
$post
到主查询中的当前帖子,因为它被上面的循环更改了。
更新:
将此项放在
div
密码
<?php
$args=array(
\'post_type\' => \'stiri\',
\'posts_per_page\' => 7,
\'taxonomy\' => \'stire\',
\'stire\' => \'articole-speciale\'
);
$recentPosts = new WP_Query($args);
?>
div结构中有一些奇怪的地方,所以我给您举两个例子:
您可以将此用作dbr
分区块:
<div class="dbr">
<?php $recentPosts->rewind_posts();?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<!-- #5 posts / offset=1 --->
<?php if($recentPosts->current_post >= 1 && $recentPosts->current_post <= 5):?>
<div class="dbrs">
<div class="dbrsi"><a href="<?php the_permalink() ?>"><img src="/scripts/timthumb.php?src=<?php the_field(\'imagine_stire\'); ?>&h=77&w=218&zc=1" alt="<?php the_title(); ?>" title="<?php the_title(); ?>" /></a></div>
<div class="dbrst"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></div>
</div>
<?php endif; ?>
<?php endwhile; ?>
</div>
类似地
dbm
分区块:
<div id="dbm">
<?php $recentPosts->rewind_posts();?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<!-- #4 posts / offset=1 --->
<?php if($recentPosts->current_post >= 1 && $recentPosts->current_post <= 4):?>
<div class="dbmc">
<div class="dbmci"><a href="<?php the_permalink() ?>"><img src="/scripts/timthumb.php?src=<?php the_field(\'imagine_stire\'); ?>&h=77&w=143&zc=1" alt="<?php the_title(); ?>" title="<?php the_title(); ?>" /></a></div>
<div class="dbmct"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></div>
</div>
<?php endif; ?>
<?php endwhile; ?>
</div>
然后,您可以对其他两种情况执行类似的操作。希望这有帮助。