我刚刚在我正在开发的网站上为一些自定义文本创建了一个元数据库。
然而,当我在其中输入一些内容并单击“更新”时,它似乎并没有保存它。而且它也没有保存在MYSQL数据库上。
下面是我的metabox的代码。
<?php
add_action( \'add_meta_boxes\', \'dd_hctb_create\' );
function dd_hctb_create() {
add_meta_box ( \'dd_meta\', \'Heading Content Text Box\', \'dd_hctb_function\', \'page\', \'normal\', \'high\' );
}
function dd_hctb_function( $post ) {
echo \'<input type="hidden" name="dd_mbe_content_nonce" value="\'.wp_create_nonce(basename(__FILE__)).\'" />\';
//retrieve the metadata values if they exist
$dd_mbe_content = get_post_meta( $post->ID, \'dd_mbe_content\', true );
echo \'Write any content in here that you want to appear above the main text.\';
echo \'<textarea name="middle" id="dd_mbe_content" value="" cols="100%" rows="10">\'.$dd_mbe_content.\'</textarea>\';
}
function dd_hctb_save($post_id) {
//attempt to verify nonce
if (!wp_verify_nonce($_POST[\'dd_mbe_content_nonce\'], basename(__FILE__)))
return $post_id;
// check the autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)
return $post_id;
// check permissions
if (\'page\' == $_POST[\'post_type\']) {
if (!current_user_can(\'edit_page\', $post_id))
return $post_id;
} elseif (!current_user_can(\'edit_post\', $post_id)) {
return $post_id;
}
//finally verify the postmeta is set
if (isset ( $_POST[\'dd_mbe_content\'] ) ) {
//now save if if the data exists
update_post_meta( $post_id, \'dd_mbe_content\', strip_tags( $_POST[\'dd_mbe_content\']));
}
} // end save function
add_action(\'save_post\', \'dd_hctb_save\' );
?>
谢谢大家的帮助-我相信这是一个拼写错误或覆盖设置的东西。我对使用wp\\u nonce也是新手,所以任何帮助或建议都会被采纳。
最合适的回答,由SO网友:tfrommen 整理而成
我优化了你的功能。
<?php
function dd_hctb_create() {
add_meta_box (\'dd_meta\', \'Heading Content Text Box\', \'dd_hctb_cb\', \'page\', \'normal\', \'high\');
} // function dd_hctb_create
add_action(\'add_meta_boxes\', \'dd_hctb_create\');
function dd_hctb_cb($post) {
wp_nonce_field(basename(__FILE__), \'dd_mbe_content_nonce\');
//retrieve the metadata values if they exist
$value = get_post_meta($post->ID, \'dd_mbe_content\', true);
?>
<p>
Write any content in here that you want to appear above the main text.
</p>
<textarea id="dd_mbe_content" name="dd_mbe_content" cols="100%" rows="10"><?php echo wp_kses_post($value); ?></textarea>
<?php
} // function dd_hctb_cb
function dd_hctb_save($id, $post) {
// check the autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)
return $id;
if (
\'page\' == $post->post_type
&& current_user_can(\'edit_page\', $id)
&& wp_verify_nonce($_POST[\'dd_mbe_content_nonce\'], basename(__FILE__))
&& isset($_POST[\'dd_mbe_content\'])
) update_post_meta($id, \'dd_mbe_content\', strip_tags($_POST[\'dd_mbe_content\']));
} // function dd_hctb_save
add_action(\'save_post\', \'dd_hctb_save\', 1, 2);
问题是您的文本区域
id="dd_mbe_content"
and name="middle"
, 优先考虑。