我们的许多初级读者很快就开始修改他们的WordPress 主题,这就是为什么我们有一个WordPress 主题备忘单来帮助他们入门。这给新用户带来了一些有趣的挑战。一位这样的读者最近问我们如何在 WordPress 中显示上周的帖子。他们只是想在主页上添加一个部分,显示上周的帖子。在本文中,我们将向您展示如何在 WordPress 中显示上周的帖子。
在向您展示如何显示上周的帖子之前,我们首先看一下如何使用 WP_Query 显示本周的帖子。将以下代码复制并粘贴到主题的functions.php文件或特定于站点的插件中。
1234567891011121314 | function wpb_this_week() { $week = date ( 'W' ); $year = date ( 'Y' ); $the_query = new WP_Query( 'year=' . $year . '&w=' . $week ); if ( $the_query ->have_posts() ) : while ( $the_query ->have_posts() ) : $the_query ->the_post(); ?> <h2><a href= "<?php the_permalink(); ?>" title= "Permanent link to <?php the_title(); ?> " ><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile ; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif ; } |
由
在上面的示例代码中,我们首先找出当前的星期和年份。然后,我们在 WP_Query 中使用这些值来显示本周的帖子。现在您需要做的就是<?php wpb_this_week(); ?>
在主题文件中添加要显示帖子的位置。
这很简单,不是吗?现在要显示上周的帖子,您只需将本周的值减 1 即可。但如果这是一年中的第一周,那么该周和当年的值将为 0,而不是去年的值。以下是解决该问题的方法。
1234567891011121314151617 号1819202122232425 | function wpb_last_week_posts() { $thisweek = date ( 'W' ); if ( $thisweek != 1) : $lastweek = $thisweek - 1; else : $lastweek = 52; endif ; $year = date ( 'Y' ); if ( $lastweek != 52) : $year = date ( 'Y' ); else : $year = date ( 'Y' ) -1; endif ; $the_query = new WP_Query( 'year=' . $year . '&w=' . $lastweek ); if ( $the_query ->have_posts() ) : while ( $the_query ->have_posts() ) : $the_query ->the_post(); ?> <h2><a href= "<?php the_permalink(); ?>" title= "Permanent link to <?php the_title(); ?> " ><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile ; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif ; } |
由
在上面的示例代码中,我们放置了两项检查。当当前周的值为 1 时,第一个检查将上周的值设置为 52(一年中的最后一周)。当上周的值为 52 时,第二个检查将年份的值设置为去年。
要显示上周的帖子,您所需要做的就是添加<?php wpb_last_week_posts(); ?>
到您想要显示它们的主题模板文件中。或者,如果您想要一个短代码,以便可以将其添加到页面或小部件中,则只需将此行添加到上面给出的代码下方即可。
1 | add_shortcode( 'lastweek' , 'wpb_last_week_posts' ); |
由
您现在可以在帖子、页面或小部件中使用此短代码,如下所示:
[lastweek]
请注意,您并不总是需要 WP_Query 来创建自定义查询。WordPress 附带了一些功能来帮助您显示最近的帖子、档案、评论等。如果有更简单的方法来使用现有功能,那么您实际上不需要编写自己的查询。