我创建了一个小插件,将颜色元框添加到自定义帖子类型中。该框显示良好,但我似乎无法保存数据。当我在字段中键入内容并单击更新时,字段将返回空白。我对此进行了研究,并遵循了许多教程,每个教程都提供了稍微不同的方法。下面的代码对我来说是最容易理解的,因此我非常感谢您能帮助我识别其中的错误。这是我的第一个问题,如果我遗漏了任何相关内容,我很抱歉。
下面是我如何添加该框的:
add_action( 'add_meta_boxes', 'addmeta' );
function addmeta() {
$post_types = array ('post', 'ev');
foreach ( $post_types as $post_type ) {
add_meta_box (
'color_box',
'Color',
'display_meta_box',
$post_type,
'side'
);
}
}
add_action ( 'add_meta_boxes', 'addmeta');
显示元框的函数:
function display_meta_box() {
$value = get_post_meta( $post->ID, '_mykey', true);
wp_nonce_field( basename( __FILE__ ), 'my_nonce' );
?>
<label for="color_box"><strong>Color:</strong> </label>
<input type="text" name="my_text" id="my_text" />
<?php
}
这是保存功能:
function save_meta_box ( $post_id ) {
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$wp_valid_nonce = false;
if( isset( $_POST[ 'my_nonce' ] ) ) {
if ( wp_verify_nonce( $_POST['my_nonce'], basename( __FILE__ ) ) ) {
$is_valid_nonce = true;
}
}
if ( $is_autosave || $is_revision || !$is_valid_nonce ) return;
if( array_key_exists( 'color_box', $_POST ) ) {
update_post_meta(
$post_id,
'_mykey',
sanitize_text_field( $_POST[ 'color_box' ] )
);
}
}
add_action( 'save_post', 'save_meta_box' );
非常感谢。