Metabox Input Not saving

时间:2013-09-09 作者:dannyw24

我已经有很长一段时间没有做过任何元框了,所以我很快就为我正在开发的网站做了这个元框。

我的问题是,当我在框中输入一些文本并点击“保存”时,文本会消失,所以我只剩下空文本框,没有保存的数据。

我猜这和我的save_post 作用

更新*现在标题字段可以工作,但内容字段不能工作。

//intialising the metabox and using the callback function



add_action( \'add_meta_boxes\', \'owl_mb_create\' );

function owl_mb_create() {

        add_meta_box( \'owl-meta\', \' Inner Page Box\', \'owl_mb_function\', \'page\', \'normal\', \'high\' );

}

?>


<?php

function owl_mb_function( $post ) {

        //retrieve the metadata values if they exist
        $owl_mb_content_one = get_post_meta( $post->ID, \'owl_mb_content_one\', true);
        $owl_mb_title_one = get_post_meta( $post->ID, \'owl_mb_title_one\', true);
        $owl_mb_content_two = get_post_meta( $post->ID, \'owl_mb_content_two\', true);
        $owl_mb_title_two = get_post_meta( $post->ID, \'owl_mb_title_two\', true);
        $owl_mb_content_three = get_post_meta( $post->ID, \'owl_mb_content_three\', true);
        $owl_mb_title_three = get_post_meta( $post->ID, \'owl_mb_title_three\', true);

        echo \'Please fill in the forms below\';
?>

<p>title:<input type="text" name="owl_mb_title_one" value=" <?php echo esc_attr( $owl_mb_title_one ); ?>" /></p>
<p>content:</p><textarea cols="1" rows="8" name="owl_mb_content_one" id="excerpt"value=" <?php echo esc_attr( $owl_mb_content_one ); ?>"></textarea>
<br />
<p>title:<input type="text" name="owl_mb_title_two" value=" <?php echo esc_attr( $owl_mb_title_two ); ?>" /></p>
<p>content:</p><textarea cols="1" rows="8" name="owl_mb_content_two" id="excerpt"value=" <?php echo esc_attr( $owl_mb_content_two ); ?>"></textarea>
<br />
<p>title:<input type="text" name="owl_mb_title_three" value=" <?php echo esc_attr( $owl_mb_title_three ); ?>" /></p>
<p>content:</p><textarea cols="1" rows="8" name="owl_mb_content_three" id="excerpt"value=" <?php echo esc_attr( $owl_mb_content_three ); ?>"></textarea>


<?php } ?>


<?php

//hook to the save the meta box data

add_action( \'save_post\', \'owl_mb_save_meta\' );

        function owl_mb_save_meta ( $post_id ) {

                        //save the metadata

                update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_one\'] ) );
                update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_one\'] ) );
                update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_two\'] ) );
                update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_two\'] ) );
                update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_three\'] ) );
                update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_three\'] ) );

        }

?>
非常感谢:)

1 个回复
SO网友:s_ha_dum

查看此代码:

update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_one\'] ) );
update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_one\'] ) );
update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_two\'] ) );
update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_two\'] ) );
update_post_meta( $post_id, \'owl_mb_content\', strip_tags( $_POST[\'owl_mb_content_three\'] ) );
update_post_meta( $post_id, \'owl_mb_title\', strip_tags( $_POST[\'owl_mb_title_three\'] ) );
第二个值是关键。每次更新都会覆盖以前的更新。如果检查数据库,应该会看到*three 价值观注释掉*three 您将看到*two 价值观

我不知道你到底想达到什么目标,但正如我所写的update_post_meta 正在覆盖您的值。

也许你想要owl_mb_contentowl_mb_title 在序列化数组中,或作为多个键,但我不知道如何以这种方式区分不同的内容。所以,我假设你想要三把不同的钥匙。

update_post_meta( $post_id, \'owl_mb_content_one\', strip_tags( $_POST[\'owl_mb_content_one\'] ) );
update_post_meta( $post_id, \'owl_mb_title_one\', strip_tags( $_POST[\'owl_mb_title_one\'] ) );
update_post_meta( $post_id, \'owl_mb_content_two\', strip_tags( $_POST[\'owl_mb_content_two\'] ) );
update_post_meta( $post_id, \'owl_mb_title_two\', strip_tags( $_POST[\'owl_mb_title_two\'] ) );
update_post_meta( $post_id, \'owl_mb_content_three\', strip_tags( $_POST[\'owl_mb_content_three\'] ) );
update_post_meta( $post_id, \'owl_mb_title_three\', strip_tags( $_POST[\'owl_mb_title_three\'] ) );
这与您尝试检索值的方式相匹配。

结束