有没有办法用html内容更新_post_meta?它会被剥离,变得空空如也

时间:2013-10-20 作者:Bowenac

因此,我正在使用jQuery克隆从数组创建的一些div。这里有一个例子。

我有一个下拉列表,其中包含要添加到元框的项目。

添加按钮根据下拉列表中与div的rel匹配的名称克隆隐藏的div。然后将其附加到我的元框中。所以结果是这样的。

        echo \'<div id="page_selected_elements" name="page_selected_elements" class="page_selected_elements">\';
        // content gets cloned into here
        // example div that gets added
        <div rel="Quote" class="page-element element1-4 test" id="page-element">
                <div class="page-element-item">
                    <div class="left-side">
                        <input type="button" value="+" class="increase-size">
                        <input type="button" value="-" class="decrease-size">
                        <span class="element-description">Quote</span>
                    </div>
                    <input type="hidden" id="page-option-item-type" class="page-option-item-type" value="Tab" name="">
                    <input type="hidden" id="page-option-item-size" class="page-option-item-size" value="element1-4" name="">
                    <div class="right-side">
                        <span id="element-size-text" class="element-size-text">1/4</span>
                        <div class="change-element-property">
                                    <input type="button" value="edit" rel="edit-box" id="page-element-edit-box" class="edit-element">
                                    <input type="button" value="Remove" class="remove-element" id="delete-element">
                        </div>
                    </div> 
                </div>
                <div id="my_modal" class="page-element-edit">
                <p>Quote</p>
                <input type="text" id="_cmb_page-option-quote" name="_cmb_page-option-quote" class="cmb_text_small">
                </div>
        </div>
        // end example div that gets added

        // getting the values for displaying after save
        $values = get_post_custom( $post->ID );
        $selected = isset( $values[\'addddData\'] ) ? $values[\'addddData\'][0] : \'\';
        echo $selected;
        echo \'</div>\';

     // Save data from metabox
function save( $post_id, $post )  {

    // verify nonce
    if ( ! isset( $_POST[\'wp_meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'wp_meta_box_nonce\'], basename(__FILE__) ) ) {
        return $post_id;
    }

    // check 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;
    }

    $cloned = $_POST[\'page_selected_elements\'];
    update_post_meta( $post_id, \'addddData\', $cloned );

    //print_r($_POST);

    }
现在的问题是,它不会保存div page\\u selected\\u元素中的内容。我可以看到,该键是通过phpmyadmin添加的,但在克隆项目“从下拉列表添加项目”后保存时,meta\\u值始终为空。

作为测试,我使用phpmyadmin手动编辑meta\\u值,并粘贴示例clone div作为值,刷新并显示div。然而,一旦我更新了页面,该值就被删除了。

作为测试,我将div page\\u selected\\u元素更改为一个textarea来测试我的保存功能,效果很好,我输入到文本区域的文本会得到更新,并在更新后显示在页面上。

有人能想到问题出在哪里吗?这可能与动态添加的内容有关吗?也许更新没有看到它。我在更新过程中一直看到克隆的项目,但一旦它重新加载页面,它们就会消失,meta\\u值为空。

1 个回复
SO网友:s_ha_dum

我认为问题在于你使用sanitize_text_field (粘贴箱中的第668行),which will strip markup. 概念验证:

$str = \'<p>Howdy Ho!</p>\';
echo $str;
echo sanitize_text_field($str);
您需要使用其他一些函数来清理数据。。。可能地wp_kses

结束

相关推荐

WordPress:可排序的Metabox字段不保存位置

我遇到了一个让我困惑的问题:升级到WP 3.6后,当您重新订购时,我的可排序metabox字段没有保存它们的位置。下面是我的代码:PHP:function save_box( $post_id ) { $post_type = get_post_type(); // verify nonce if ( ! isset( $_POST[\'custom_meta_box_nonce_field\'] ) ) return $p