设置到期日期时的自定义字段值

时间:2014-07-29 作者:okiedokey

我有一个想法,让粘性帖子在一段时间后过期。

仅供参考,我正在使用自定义帖子类型和自定义字段套件,并通过创建布尔自定义字段来创建粘性帖子。premium 是返回值的真/假自定义字段1 如果选中该复选框(使帖子成为特色帖子)

如果我创建了另一个自定义字段来设置到期日期,那么在达到到期日期时,我如何将粘性自定义字段值设置为0?

我的意思是(书面英语):

用“premium”键检查自定义字段,检查自定义字段“premium”的值是否为1,将“premium”值设置为0,是否有人可以帮助实现此功能?

我将从以下内容开始(请原谅我的风格,我只是想提供一些想法)

global $post;
global $cfs;
if ( \'1\' = $cfs->get(\'premium\') && \' \' != $cfs->get(\'expiration_date\') ) :
$current_date = date(Y-m-d);
$expiration_date = $cfs->get(\'expiration_date\');
if( // I\'m stuck here... ) ....
date_post_meta( $post->ID, \'premium\', \'1\', \'0\' ); // set premium field from 1 to 0 for every post that matches
endif;

1 个回复
最合适的回答,由SO网友:okiedokey 整理而成

明白了。插件开发人员帮助我查看建议的代码。

首先,确保您申报global $cfs (使用自定义Field Suite插件时需要)。

以下代码检查名为premium 如果其值设置为1 (这意味着它应该是一个高级帖子)以及一个名为expiration_date 如果设置了一个值。

然后,代码正确格式化今天的日期,以匹配自定义字段的日期格式,在本例中为Y-m-d。

定义并格式化日期后,代码检查过期日期是否在过去($expiration_date < $today ) 并更新premium 字段来自10, 这意味着它取消了posts premium状态。

The code:

global $cfs; //necessary for custom field suite plugin
if ( \'1\' == $cfs->get(\'premium\') && \'\' != $cfs->get(\'expiration_date\') ) : // if post has premium status and an expiration date set
    $current_date = date(\'Y-m-d\'); // format today\'s date
    $expiry = $cfs->get(\'expiration_date\');
    $today = strtotime($current_date);
    $expiration_date = strtotime($expiry);

    if ( $expiration_date < $today ) { // if expiration date is in the past
        $field_data = array(\'premium\' => \'0\'); // unset premium status
        $post_data = array(\'ID\' => $post->ID);
        $cfs->save($field_data, $post_data);
    }
endif;

结束

相关推荐