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
相关产品推荐
相关产品推荐

