You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义元框日期输入数据无法保存问题求助

WordPress自定义Events文章类型日期元框无法保存数据的修复方案

你的代码存在两个关键错误导致数据无法保存,同时有一个可选优化点:

错误1:Nonce验证变量名错误

在event_post_date_save函数中,wp_verify_nonce的第一个参数写成了$POST,PHP中超全局变量的正确写法是$_POST。这个错误会直接导致nonce验证失败,函数提前返回,无法执行后续保存逻辑。

错误2:HTML标签拼写错误

代码里的<lable>是拼写错误,正确应为<label>,虽然不影响数据保存,但会造成HTML语义错误。

可选优化:限制save_post钩子作用范围

当前save_post钩子会对所有文章类型触发,加上自定义文章类型判断,可以避免不必要的函数执行。

修正后的完整代码

//custom fields meta box
function event_post_date_meta_box(){
    add_meta_box('event_date', 'Add Event Date', 'event_post_date_callback', 'event', 'normal', 'high');
}

function event_post_date_callback( $post ){
    wp_nonce_field('save_event_post_date', 'event_post_date_nonce');

    $value = get_post_meta($post->ID, '_event_post_date_value_key', true);

    echo '<label for="event_post_post_date_field"> Event Date: </label>';
    echo '<input type="date" id="event_post_post_date_field" name="event_post_post_date_field" value="'. esc_attr($value) .'" size="25" />';
}

add_action('add_meta_boxes','event_post_date_meta_box');

function event_post_date_save($post_id) {
    // 仅处理event类型的文章
    if (get_post_type($post_id) !== 'event') {
        return;
    }

    if( ! isset ($_POST['event_post_date_nonce'])){
        return;
    }

    if( ! wp_verify_nonce($_POST['event_post_date_nonce'], 'save_event_post_date')) {
        return;
    }

    if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
        return;
    }

    if ( ! current_user_can('edit_post', $post_id)){
        return;
    }

    if( ! isset($_POST['event_post_post_date_field'])){
        return;
    }

    $event_date_data = $_POST['event_post_post_date_field'];

    update_post_meta( $post_id, '_event_post_date_value_key', $event_date_data );
}

add_action( 'save_post', 'event_post_date_save');

内容的提问来源于stack exchange,提问作者onlyoreoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:22:46