If Statement is Ignored?

时间:2020-08-15 作者:M Ikram

我正在尝试根据帖子是否已“过期”更新布尔型自定义字段。

发布日期超过30天的帖子将被视为过期。为了检查这一点,我正在使用检索发布后日期get_the_date() 再加上30天。然后我检查这个新日期是否大于或等于当前日期。

然而,用于比较日期的if语句似乎根本没有触发。我查看了今天发布的一篇帖子,布尔值True/False字段为False。我查看了一年前发表的一篇文章,但仍然是假的(预期为真)。

有人能帮我弄清楚发生了什么事吗?如果您对我如何改进这一点有任何建议,请随时提出来。

谨致问候。

add_filter(\'acf/load_field/name=is_listing_expired\', \'acf_listing_expiry\');
function acf_listing_expiry($field) {

    $start_date_string = get_field(\'listing_start_date\'); //Get the start date value

    $date_format = "Ymd";

    $listing_date = DateTime::createFromFormat($date_format, get_the_date(\'Ymd\', null)); //Convert to a DateTime object
    $modify_amount = "+" . get_field(\'days_till_expiry\') . " days"; //Get the days till expiry value, minimum value is 2

    $new_date = $listing_date->modify($modify_amount); //Get the end date

    $current_date = date($date_format);

    //Check if the date has reached 
    if($new_date <= $current_date) {
        $field[\'default_value\'] = true;
        return $field;
    } else {
        $field[\'default_value\'] = false;
    }
    $field[\'default_value\'] = false;
    return $field;
}

1 个回复
SO网友:M Ikram

UPDATE: 原来我是在比较DateTime对象和PHP的date()函数。当我将date()切换为DateTime时,比较结果很好。

相关推荐

自定义php页面超出了我的主题范围

场景我正在一个域的网站上工作,该网站是多站点安装的一部分。我期待着创建一个自定义php页面,将做一些处理。可以使用Javascript从WP主站点访问此页面XMLHttpRequest我不希望此页面包含任何主题的标题、内容等,因为用户的浏览器实际上不会直接访问此页面。Example php (simplified);<?php session_start() $_SESSION["stuff"] = "things"; echo "success&q