将元框值作为数组保存到wp_postmeta

时间:2015-03-17 作者:Interactive

我有一个自定义的metabox,它可以动态地将字段添加到表单中
我被保存部分卡住了。

以下是添加字段的方式:

<tr>
   <td valign="top">
     <label for="brands" class="prfx-row-title"><?php _e( \'Merken:\', \'prfx-textdomain\' )?></label>
   </td>
   <td>
        <script type="text/javascript">
            jQuery(document).ready(function($){
            var max_fields      = 10; //maximum input boxes allowed
            var wrapper         = $(".input_fields_brand"); //Fields wrapper
            var add_button      = $(".add_field_button_brand"); //Add button ID

            var x = 1; //initlal text box count
            $(add_button).click(function(e){ //on add input button click
                e.preventDefault();
                if(x < max_fields){ //max input box allowed
                x++; //text box increment
                $(wrapper).append(\'<div><input type="text" name="brand[]" id="brand[]"/><a href="#" class="remove_field_brand">Verwijderen</a></div>\'); //add input box
                }
            });

            $(wrapper).on("click",".remove_field_brand", function(e){ //user click on remove text
                e.preventDefault(); $(this).parent(\'div\').remove(); x--;
                })
            });
           </script>
    <div class="input_fields_brand">
       <button class="add_field_button_brand">Toevoegen</button>
       <div><input type="text" name="brand[]" id="brand[]"></div>
    </div>
  </td>
 </tr>
这是可行的。我想加载数组中的所有数据brands[]

下面是我在保存部分所做的:

if( isset( $_POST[ \'brand[]\' ] ) ) {
    update_post_meta( $post_id, \'brand[]\', sanitize_text_field( $_POST[ \'brand[]\' ] ) );
}
我将其用于所有其他字段,并将其正确保存到数据库中。不知道我错过了什么。

希望其他人也这样做。

EDIT

好的,这样就行了。我知道有一个后续问题:-)

我需要将数据输出到输入字段。用户必须能够更改先前填写的字段。因此,我做了以下工作:

<?php
$postid = get_the_ID();
$brands = get_post_meta( $postid, \'brand\' );                                                        
    $arrlength = count($brands);
    echo \'<div class="input_fields_brand">\';
    echo \'<button class="add_field_button_brand">Toevoegen</button>\';
    for($x = 0; $x <= $arrlength; $x++)
    {
        echo \'<div><input type="text" name="brand[]" id="brand[]" value="\'.$brands[0][$x].\'"></div>\';
    }
    echo \'</div>\';
?>
这将显示数据库中的数据,并使用以下内容添加新数据:

var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
    e.preventDefault();
    if(x < max_fields){ //max input box allowed
        x++; //text box increment
        $(wrapper).append(\'<div><input type="text" name="brand[]" id="brand[]"/><a href="#" class="remove_field_brand">Verwijderen</a></div>\'); //add input box
    }
});
这会添加字段,但不会保存值。

有什么想法吗?

(仍需处理id字段)

0 个回复
结束

相关推荐

Array to modify post titles

是否可以将其转换为数组:function manipulate_post_title($title){ global $post; if ($post->ID == 1) {$title = $title.\'suffix\';} if ($post->ID == 2) {$title = $title.\'different_suffix\';} } add_filter (\'the_title\',\'manipulate_post_title\'