If Posted After Date

时间:2013-08-15 作者:Noob Theory

我需要根据日期和类别获取不同的“get\\u template\\u part”。我已经更改了该类别的支出,这意味着在今天之前该类别中的任何帖子都不能使用新模板,但仍需要使用旧模板。

if ( in_category( \'photographer-interviews\' )) {
 get_template_part( \'content\', \'interview\' );
} else {
 get_template_part( \'content\', \'blog\' );
}
因此,我还需要检查“摄影师访谈”中的帖子是否是在今天之后发布的。如果是继续使用新模板,如果不是继续使用旧模板(博客)。

3 个回复
SO网友:vancoder

有很多方法可以比较日期。以下可能是最简单的(未经测试):

if ( in_category( \'photographer-interviews\' ) && strtotime( get_the_date( \'c\' ) ) > 1376524800 ) {
 get_template_part( \'content\', \'interview\' );
} else {
 get_template_part( \'content\', \'blog\' );
}
1376524800是8月15日(即14日午夜)00:00(GMT)的Unix时间戳。所以,发布日期为15日的帖子将返回true。

如果你真的只想在15号之后发帖子,你可以使用1376611200。

SO网友:epilektric

以下是将发布日期与设置日期进行比较的步骤。

获取发布日期

这将以yyyy mm dd格式检索日期,如2013年7月31日所示。Wordpress Codex有更多关于the_date().

$post_date = the_date( \'Y-m-d\', \'\', \'\', false );

指定截止日期

指定要比较发布日期的日期。使用与步骤1中相同的日期格式。

$cutoff_date = \'2013-08-14\';

转换日期

使用PHP的strtotime() 功能,以便进行比较。将此添加到上面的代码中。

$post_date = strtotime( the_date( \'Y-m-d\', \'\', \'\', false ) );
$cutoff_date = strtotime( \'2013-08-14\' );

比较日期

$post_date > $cutoff_date

现在大家都在一起

这是完整的代码。

$post_date = strtotime( the_date( \'Y-m-d\', \'\', \'\', false ) );
$cutoff_date = strtotime( \'2013-08-14\' );
if ( in_category( \'photographer-interviews\' ) && $post_date > $cutoff_date ) {
    get_template_part( \'content\', \'interview\' );
} else {
    get_template_part( \'content\', \'blog\' );
}

SO网友:Piet Stilkenboom

好极了,我用这个想法在引导程序3和4之间切换。

$post_date = strtotime( get_the_date( \'Y-m-d\', \'\', \'\', false ) );
$cutoff_date = strtotime( \'2019-12-31\' );
if (is_single() && $post_date > $cutoff_date) {
echo \'<bootstrap 4 code>\';
} elseif (is_single() && $post_date < $cutoff_date) { echo \'<bootstrap 3 code>\';}
elseif (!is_single()) {echo \'<bootstrap 4 code>\';}

结束