我试图根据事件发生的日期显示自定义帖子类型中的数据。日期在cpt的元框中设置。
到目前为止,我的代码是:
$today = date(\'d/m/Y\');
$p_date = get_post_meta($post->ID, \'_cmb_training_date\', true);
$p_date2 = get_post_meta($post->ID, \'_cmb_training_start_date\', true);
if($p_date > $today) {
// stuff
}
这很好(只显示今天日期之后的事件),但我想添加另一种事件类型(
$p_date2
) 也一样,但如果我这样做了:
if($p_date > $today || $p_date2 > $today) {
// stuff
}
它显示来自CPT的所有帖子
日期格式都是一样的,所以必须使用if语句
有什么想法吗?
最合适的回答,由SO网友:Stephen Harris 整理而成
对于日期操作,应使用DateTime 班此外,日期应存储在Y-m-d
格式(如果以不同的方式存储,则可以使用指定的格式创建DateTime对象:http://php.net/manual/en/function.date-create-from-format.php (php 5.3以上版本)-但我建议以明确的Y-m-d格式存储)。
以下假设Y-m-d
post meta中的格式:
$today = new DateTime( \'now\' );
$p_date = new DateTime( get_post_meta($post->ID, \'_cmb_training_date\', true) );
$p_date2 = new DateTime( get_post_meta($post->ID, \'_cmb_training_start_date\', true) );
if( $p_date > $today || $p_date2 > $today) {
// stuff
}
正如你在
the comments. 您还可以轻松获取年/月/日信息:
if( $p_date2->format(\'m\') == \'01\' ){
//$p_date2 is in January
}