将日期和时间添加到 wordpress 循环似乎是一项非常简单的任务,对吧?
嗯,是。这可以是编写一个简单的模板标签并让 WordPress 为您完成工作的情况。但有时您可能会在此过程中遇到问题。
在这个快速提示中,我将向您展示 WordPress 为您提供的用于显示日期和时间的不同功能,并告诉您在遇到问题时使用哪些功能。
可用的模板标签
WordPress 为您提供了四个函数来输出日期和/或时间。这些是:
the_date()
:默认情况下,它会以格式 回显帖子F j, Y
的日期,因此如果帖子于 2018 年 11 月 20 日发布,它将回显 2018 年 11 月 20 日。get_the_date()
:这会获取日期并且不会将其回显。要回显它,您可以使用echo get_the_date()
,它会得到与 . 相同的结果the_date()
。如果您已经echo
在代码中使用它,它会很有用。它还可以帮助您解决不显示日期的问题,您很快就会看到。the_time()
和get_the_time()
:默认情况下获取时间,但如果您指定日期格式,您还可以包含日期。如果您配置了格式,您甚至可以使用它来输出日期,但使用the_date()
or 会更有意义echo get_the_date()
。
格式化日期
每个函数都有一个默认格式,如果需要,您可以覆盖它。为此,您需要使用标准的 php 日期和时间格式。
以下是一些示例,全部来自 2018 年 11 月 20 日发布的帖子。
the_date()
默认 输出 2018 年 11 月 20 日。echo get_the_date( l, S M Y )
将输出 2018 年 11 月 20 日星期二。the_time( 'g:i a' )
将输出 2:03 pm。echo get_the_time( 'G:i' )
将输出 14:03。the_time( 'g:i a, D, j F y' )
将输出 18 年 11 月 20 日,星期二,下午 2:03。
循环中的日期故障排除:存档页面中缺少日期
如果您 the_date()
用于在存档页面上输出日期,并且您发现某些帖子没有显示日期,那是因为 the_date()
不会重复与前一个帖子在同一天发布的后续帖子的日期。
如果您不想为当天发布的每个帖子重复日期,有时您可能希望保持这种状态。但是,如果您想确保所有帖子的日期输出带有标题和您输出的任何其他内容,则需要使用另一个函数。您可以使用上述其他三个功能中的任何一个。
最简单的选择是替换 the_date()
为 echo get_the_date()
. 如果你想添加时间,要么 要么 the_time()
将 echo get_the_time()
工作。
the_date()
注意:如果您对引发此问题但 the_time()
没有出现的事实感到困惑 ,那是因为在同一日期发布的帖子不是在同一时间发布的。您必须付出很多努力,要么安排帖子,编辑发布时间,要么协调两个博主之间的努力,才能做到这一点!
我在为客户编写的主题的首页模板中遇到了这个问题。在这个模板中有许多循环,所有循环都导致网站上不同的内容类型,并且都使用 WP_Query
. 直到他们添加两个帖子(不是他们通常做的事情)的那一天,问题才明显。他们不明白为什么第二个帖子的日期没有出现在主页上,并不断编辑它,刷新它,然后重新发布它,直到他们放弃并问我。
这是原始代码:
<ul class="newsletters"> <?php $query = new WP_Query( array( 'post_type' => 'post', 'category_name' => 'newsletters', 'posts_per_page' => 8 ) ); while ($query->have_posts()) : $query->the_post(); ?> <li class="home newsletter"><a href="<?php the_permalink(); ?>"><?php the_title(); ?> - <?php the_date( 'j F, Y' ); ?></a></li> <?php endwhile; ?> </ul>
我编辑了这个函数,所以它看起来像这样:
<ul class="newsletters"> <?php $query = new WP_Query( array( 'post_type' => 'post', 'category_name' => 'newsletters', 'posts_per_page' => 8 ) ); while ($query->have_posts()) : $query->the_post(); ?> <li class="home newsletter"><a href="<?php the_permalink(); ?>"><?php the_title(); ?> - <?php echo get_the_date( 'j F, Y' ); ?></a></li> <?php endwhile; ?> </ul>
在行开头的ning li class="home newsletter"
中,我替换 the_date( 'j F, Y' )
为 echo get_the_date( 'j F, Y' )
. 它解决了这个问题。
因此,如果您发现日期未显示在您的档案中,这可能是解决方案。
显示日期和时间的一些技巧
如本文前面所述,您可以使用四种不同的函数来输出存档页面上帖子的发布日期。
使用 the_date()
和 get_the_date()
函数
Using the_date()
将输出日期,但对于同一天发布的多个帖子,它只会输出一次日期。该函数 get_the_date()
返回所有帖子的日期,即使它们是在同一日期发布的。但是,您需要用于 echo get_the_date()
输出日期。
使用 the_time()
和 get_the_time()
函数
该函数 the_time()
还将为每个帖子分别输出日期。但是,该函数默认会按照选项值指定的格式输出时间 time_format
。您可以通过调用它来使用它来输出日期 the_time('j F, Y')
。该 get_the_time()
函数以类似的方式工作,但它返回日期而不是输出它。这意味着您将不得不使用 echo get_the_time('j F, Y')
来输出日期。您可以简单地将所有出现的 替换为 the_date('j F, Y')
要 the_time('j F, Y')
显示日期的任何位置。
<li class="home newsletter"><a href="<?php the_permalink(); ?>"> <?php the_title(); ?> - <?php the_time( 'j F, Y' ); ?></a></li>
函数的 附加参数the_date()
与其他函数不同,它 the_date()
接受四个参数。第二个和第三个参数用于指定应该在日期前后显示的字符串。可以使用以下代码为其他功能复制类似的功能:
<?php // This will wrap the publication date in span tags. the_date( 'j F, Y', '<span class="pub-date">', '</span>' ); // The same thing can be achieved by writing the span tags around the get_the_date() and get_the_time() functions. echo '<span class="pub-date">'.get_the_date( 'j F, Y').'</span>'; echo '<span class="pub-date">'.get_the_time( 'j F, Y').'</span>'; ?>
如果您想了解有关 WordPress 的更多信息,请关注我们的其他课程和教程!
- 使用 the_date() 和 get_the_date() 函数
- 使用 the_time() 和 get_the_time() 函数
- 函数的 附加参数the_date()