我有一个自定义字段,附加到自定义帖子自定义帖子是一个配置文件(用户),“自定义”字段是一个日期,存储为unix时间戳。
我这样评价:
function born_today_func( $atts ) {
extract(shortcode_atts(array(
'birthday' => get_post_meta(get_the_ID(), 'wpcf-your_cf_slug', true),
), $atts)
);
if((date('d', strtotime($birthday)) == date('d')) && (date('m', strtotime($birthday)) == date('m'))){
return 1;
}else{
return 0;
}
}
add_shortcode( 'born-today', 'born_today_func' );
[我是否将其用作短代码,函数或其他任何东西都没关系:
if((date('d', strtotime($birthday)) == date('d')) && (date('m', strtotime($birthday)) == date('m')))
未正确使用当前日期评估自定义字段的日期。
我今天有以下结果:
个人资料1
12/05/08
人2
11/05/08
人3
01/05/15
但是很明显,应该只回显12/05(配置文件1)。
值得一提的是,这不是我唯一的个人资料,但不会返回所有其他日期(例如,未返回13/05/08
)
我在做什么错?
如何正确检查UNID TIMESTAMP的dd / mm并仅在dd / mm与TODAY相对应时才输出?
我不希望包括2月29日在内,那就是另外一回事。
我的代码是正确的,它评估某些内容,但不完全正确。
我希望有人可以提供帮助。
仅供参考:这将返回完全相同的结果作为我上面的代码:
$birthDate = get_post_meta(get_the_ID(), 'wpcf-birthday', true);
$time = strtotime($birthDate);
if(date('m-d') == date('m-d',$time)) {
return 1;
}else{
return 0;
}
路加建议的其他信息:
var_dump返回:
$ birthDate:
string(10) "1210550400" string(10) "1421020800" string(10) "1210464000" string(10) "1430438400"
$ time:
int(-49532903345) bool(false) int(64072123846) int(202922721043)
不确定现在该怎么办?
不管这里所有(肯定)有用的评论和答案,解决方案都简单得多。只是不要转换。
此代码将按预期工作:
function born_today_func( $atts ) {
extract(shortcode_atts(array(
'birthday' => get_post_meta(get_the_ID(), 'wpcf-birthday', true),
), $atts)
);
if(((date('d', $birthday)) == date('d')) && (date('m', $birthday)) == date('m')){
return 1;
}else{
return 0;
}
}
add_shortcode( 'born-today', 'born_today_func' );
您应使用DateTime::createFromFormat()
而不是strtotime
来解析日期。您的日期12/05/08
看起来模棱两可。
如果有人正在寻找简单的解决方案,而不是针对wordpress,请点击凹凸
$birthday = new DateTime("05-28-2020");
$today = new DateTime(date("Y-m-d"));
if ($birthday->format("m-d") == $today->format("m-d")) {
echo 'Today is your birthday';
} else {
echo 'Today is not your birthday';
}