当我以特定的标记输出一个帖子循环时,我如何在特定的间隔中断,为下一篇帖子使用不同的标记,然后在标准布局中的适当点恢复循环?
明确地
将左侧的布局改为右侧的布局,其中,明信片的流动被中断和改变,以引入视觉变化。。。
注意,常规整个卡片网格(左侧示例)的现有post循环输出如下。。。
if ( $posts->have_posts() ) { ?>
<!-- Posts row -->
<div class="row pb-4 px-2 posts-row">
<?php
// Post Loop
while ( $posts->have_posts() ) {
$posts->the_post();
// Regular card
echo \'<div class="d-flex align-items-stretch col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3 p-2 post-item overlay-bg">\';
set_query_var(\'bgcolor\', \'bg-white\');
set_query_var(\'use_logo\', true);
set_query_var(\'use_byline\', true);
set_query_var(\'use_source\', false);
get_template_part(\'pieces/cards/post\', multi);
echo \'</div>\';
} // end while
wp_reset_query();
?>
</div><!-- end .row -->
<?php
} else { ?>
Nothing here.
<?php } ?>
但问题不在于简单地更改同一网格(即
challenge I already surmounted). 相反,我想打破网格,重新使用备用,在您看到的紫色折叠功能块上方。
该块是使用my函数渲染的display_showcase_features()
, 以a为参数WP_Query Object
包含五个帖子,然后使用替代容器网格和替代帖子卡类型输出相关标记。
我需要完成的是。。。
在$posts中的post 13中,打破div,发送一个包含接下来五篇post的WP\\U查询对象到display_showcase_features()
, 它以交替布局输出由五个帖子组成的块,并定期从标准布局的第18个帖子恢复行的开头div我尝试了以下方法。。。
if ( $posts->have_posts() ) { ?>
<!-- Posts row -->
<div class="row pb-4 px-2 posts-row">
<?php
$i=0;
// Post Loop
while ( $posts->have_posts() ) {
$posts->the_post();
$i++;
/**
* =======================================================
* VARY POST CARDS TO BREAK UP LIST
* =======================================================
*/
if ($i == 13 or $i == 26) { ?>
</div><!-- end content column -->
</div><!-- end whole row -->
<?php display_showcase_posts($showcase_features); ?>
<?php
echo \'<div class="container-fluid bg-light py-4">\';
echo \'<div class="row pb-4 px-2 posts-row">\';
?>
<?php
} else {
/**
* =======================================================
* STANDARD POST CARD LAYOUT
* =======================================================
*/
// Regular card
echo \'<div class="d-flex align-items-stretch col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3 p-2 post-item overlay-bg">\';
set_query_var(\'bgcolor\', \'bg-white\');
set_query_var(\'use_logo\', true);
set_query_var(\'use_byline\', true);
set_query_var(\'use_source\', false);
get_template_part(\'pieces/cards/post\', multi);
echo \'</div>\';
}
} // end while
wp_reset_query();
?>
</div><!-- end .row -->
<?php
} else { ?>
Nothing here.
<?php } ?>
加价中断效果很好,这是我需要了解的WordPress内容。。。
1. How do I get a WP_Query
object containing the next five posts?
在上述尝试中,我将发送到
display_showcase_features()
仅仅
$showcase_features
, 其中包含与上述折叠块中使用的相同的五根立柱。但这真的只是一个测试。
相反,我认为我需要的是下面标准布局循环中接下来的五篇文章。我是否需要在此处对某种范围进行新查询?这对数据库来说会很昂贵吗?
2. How do I then elegantly resume the standard-layout loop output at the right place?
也就是说,在上面右侧的视觉示例中,使用上面的代码尝试,实际上不会渲染post 13,因为我将在该点显示showcase块。循环应该在中断后恢复五个帖子,假设
display_showcase_features()
确实输出了五个帖子。
3. How do I do this at regular intervals?
可以预测预期布局破坏的模式。即12个标准布局的帖子,然后发送5个到
display_showcase_features()
, 然后是另外12个。
尽管我担心分页可能会毁掉一切,例如,如果分页可能会让我的div打开的话。