使用Get_the_Date检查帖子是否在6个月前发布

时间:2021-02-13 作者:Harold Aldersen

在我的内部content-single 模板,我有一个条件检查,根据帖子的年龄显示文本。这样做的目的是通知访客他们可能正在阅读;“旧”;消息

问题是;这个6+ months old 文字显示在只有几天的帖子上,我不明白为什么。

This is the code I am using:

<?php
    
    if ( strtotime( get_the_date() ) < strtotime( \'-1 year\' ) ) { ?>

        <span class="old-post"> 6+ months old </span>&nbsp;/&nbsp;
        
        <?php 
    } 

?>
这是我在WP admin中使用的日期和时间格式:

l \\t\\h\\e jS \\of F @ H:i
请帮助我了解如何修复此问题。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

问题是您的日期格式不是标准格式strtotime() 理解。相反,只需使用get_the_date() 格式设置为\'U\', 返回时间戳,并将其与strtotime( \'-1 year\' ):

if ( get_the_date( \'U\' ) < strtotime( \'-1 year\' ) ) {

}

SO网友:Chetan Vaghela

通过使用以下代码,您可以使用get\\u the\\u date检查帖子是否在6个月前发布。

将下面的代码放在内容单一模板中,通知访问者他们正在阅读;“旧”;6个多月前发布的新闻。

# get last 6 month date from current date
$last_sixth_month_date = strtotime("-6 month"); 

# publish date
$post_poblish_date = strtotime( get_the_date() );

# get difference from two dates
$year1 = date(\'Y\', $last_sixth_month_date);
$year2 = date(\'Y\', $post_poblish_date);
$month1 = date(\'m\', $last_sixth_month_date);
$month2 = date(\'m\', $post_poblish_date);
$month_diffrence = (($year2 - $year1) * 12) + ($month2 - $month1);

if($month_diffrence < 0 )
{
    # check difference between date is 6 or more than 6
    if(abs($month_diffrence) >= 6 )
    {
        echo  \'<span class="old-post"> 6+ months old </span>&nbsp;/&nbsp\';
    }
}