将元字段设置为发布日期+2周

时间:2018-10-03 作者:Edegist

我有一个元字段叫做postexpiry, 我想将该值设置为发布日期+2周。因此,如果今天是10月3日,我希望字段设置为10月17日。

我在考虑创建一个publish_post 筛选,但我不确定如何在get_the_date().

我知道用php我可以做这样的事情$dateInTwoWeeks = strtotime(\'+2 weeks\'); 但我不知道怎么用它get_the_date()

谢谢

UPDATE

我尝试了以下代码,但没有任何效果:

function dp_expiry() {

$dp_new_expiry_date = strtotime( \'+2 weeks\', strtotime( $post->post_date ) );
update_post_meta( get_the_ID(), \'postexpiry\', $dp_new_expiry_date );
}

add_action( \'publish_post\', \'dp_expiry\' );
Also, 我的主题要求日期在yyyy-mm-dd 总体安排

UPDATE 2

此代码向字段输出“1209600”。有什么想法吗?谢谢

add_action(\'publish_post\', \'dp_expiry\');
function dp_expiry( $data ) {

$dp_new_expiry_date = strtotime( \'+2 weeks\', strtotime( $post->post_date ) );

update_post_meta( $data[\'post_id\'], \'postexpiry\', $dp_new_expiry_date );
}

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

Try this:

add_action(\'publish_post\', \'dp_expiry\');
function dp_expiry( $data ) {
    /*adds 2 weeks onto the current date in unix epoch format*/
$dp_new_expiry_date = (strtotime( current_time( \'mysql\' ) ) + 1209600);
        /*converts unix timstamp back to yyyy-mm-dd format like you required*/
    $dp_new_expiry_date_conv = date("Y-m-d", $dp_new_expiry_date);
update_post_meta( $data[\'post_id\'], \'postexpiry\', $dp_new_expiry_date_conv );
}
SO网友:Hans

get_the_ID() 是循环函数,在这里可能不起作用。您应该使用回调的参数:

function dp_expiry( $ID, $post ) {

    $dp_new_expiry_date = strtotime( \'+2 weeks\', strtotime( $post->post_date ) );

    update_post_meta( $ID, \'postexpiry\', $dp_new_expiry_date );
}

add_action( \'publish_post\', \'dp_expiry\', 10, 2 );
publish_post 只适用于帖子,不适用于页面。您可以使用publish_{post_type} 用于自定义帖子类型。

结束