Metabox Not saving data

时间:2013-09-27 作者:Dannyw24

我刚刚在我正在开发的网站上为一些自定义文本创建了一个元数据库。

然而,当我在其中输入一些内容并单击“更新”时,它似乎并没有保存它。而且它也没有保存在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也是新手,所以任何帮助或建议都会被采纳。

1 个回复
最合适的回答,由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", 优先考虑。

结束

相关推荐

如何对style.php进行更改

我正在从一个叫做Dynamix的Wordpress主题工作。现场位于here...如果你向下滚动到带有评论的帖子,你会看到一个带有黑色背景的评论气泡。如果你把鼠标悬停在它上面,你会注意到它变成了红色。In Chrome\'s debugger, I found this line of code... (很长,但从这个开始)#content ul li.socialinit, #content and it ends with this background tag...background-color: