发布帖子后添加元字段

时间:2017-08-24 作者:Neil K

我试图在发布或保存帖子时添加event\\u month的自定义字段。我正在使用save\\u post操作,获取包含日期的自定义字段的内容,并尝试将其存储在单独的自定义字段中,只包含月份。当保存已经创建的帖子时,这种方法非常有效。我已经在下面显示了我的代码。

add_action(\'save_post\', \'update_event_date\');

function update_event_date($post_id){

    $post_type = get_post_type($post_id);
    $event_datee = get_post_meta($post_id, \'_EventStartDate\', true);

    if ($post_type == \'tribe_events\'){

        $month = date("m",strtotime($event_datee));
        update_post_meta($post_id, \'event_month\', $month);

    }

}
创建新帖子时会出现问题。我想这是因为行动在_EventStartDate meta已创建,因此无法从此中提取月份。

在保存/更新帖子时,钩子可以正确地按预期触发,但在创建新帖子时,钩子不能正确地从元中获取月份。

如果有人能给我一些指导,我将不胜感激。

2 个回复
SO网友:Johansson

你可以加入post_updated 操作,如果您想在发布后访问帖子的数据。此挂钩传递帖子的ID、淹没的帖子对象和更新的帖子对象。

add_action( \'post_updated\', \'update_event_date\', 10, 3 );
function update_event_date( $post_id, $post_after, $post_before ){

    $post_type = get_post_type( $post_id );
    $event_datee = get_post_meta( $post_id, \'_EventStartDate\', true );

    if ( $post_type == \'tribe_events\' ) {

        $month = date( "m",strtotime( $event_datee ) );
        update_post_meta( $post_id, \'event_month\', $month );

    }

}

SO网友:Anton Lukin

使用pre_post_update 而不是save_post

完整说明here

结束