这是非常基本的,但应该会帮助你的方式。
//Get posts for the current week
$args = array(
\'date_query\' => array(
array(
\'year\' => date( \'Y\' ),
\'week\' => date( \'W\' ),
)
)
);
//Check for search query
if ( isset( $_GET[\'s\'] ) ) {
$args[\'s\'] = $_GET[\'s\'];
}
//Create these variables for use later
$i = 0;
$previous_post_date = 0;
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
//Get the total amount of posts based on the query
$count = $the_query->found_posts;
while ( $the_query->have_posts() ) : $the_query->the_post();
//Get post date
$post_date = get_the_time(\'M j, Y\');
//Where the magic happens, see below for explanation
if ( $previous_post_date !== $post_date ) {
//If not the first time close div as a daily-block isn\'t created until the 2nd loop
if ( $previous_post_date !== 0 ) {
echo \'</div>\';
}
$previous_post_date = $post_date;
echo \'<div class="daily-block">\' . $post_date;
} ?>
<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
<a class="vissted" href="<?php the_permalink(); ?>">
<div class="hovereffect">
<div class="thumbnail">
<?php the_post_thumbnail( \'singles\', array( \'class\' => "img-responsive" ) ); ?>
<div class="overlay">
<?php the_title( \'<h2>\', \'</h2>\' ); ?>
</div>
<div class="caption">
<div class="ratings">
<p class="pull-right"> </p>
<p>Watch Video</p>
</div>
</div>
</div>
</div>
</a>
</div>
<?php
//Increment $i
$i++;
//Check if it\'s the end of the loop (i.e. $i = found_posts)
if ( $i == $count ) {
echo \'</div>\';
} ?>
<?php endwhile; else : ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif;
wp_reset_postdata(); ?>
只是为了解释条件。开始时,我们设定
$previous_post_date
到
0
. 这意味着循环中的条件在第一个“循环”中始终显示为真(即前一个日期与当前日期不匹配),并将输出日期。第一次检查确保我们没有输出结束
div
作为
daily-block
div尚不存在。
如果为true,则设置$previous_post_date
等于$post_date
这样,当在同一天的帖子中循环时,这个条件就不再是真的了。一旦你到达一个日期不同的帖子,它将输出标题并再次重置之前的日期。这一次它将关闭打开的daily-block
div并重新打开另一个。
最后,我们检查是否是循环的结束,并关闭daily-block
部门。
如果你需要进一步的澄清,请告诉我。
Update for search results
要在搜索结果页面上执行此操作,您需要在
$args
阵列
我已经更新了主代码段来显示这一点if ( isset( $_GET[\'s\'] ) ) {
$args[\'s\'] = $_GET[\'s\'];
}
这样做的目的是检查URL中的搜索查询字符串,如果找到,则将其添加到查询中。请记住,这仍将仅显示本周的结果,但基于搜索的关键字。