Php 将所有值保存在";多重选择";

Php 将所有值保存在";多重选择";,php,wordpress,meta-boxes,Php,Wordpress,Meta Boxes,我在wordpress中有一个具有多重选择表单的元数据库 <select name="my_meta_box_select" id="my_meta_box_select" multiple="" style="width:300px; height:400px;"> <option value="red">Red </option> <option value="blue">Blue </option>

我在wordpress中有一个具有多重选择表单的元数据库

<select name="my_meta_box_select" id="my_meta_box_select" multiple="" style="width:300px; height:400px;">
    <option value="red">Red
    </option>
    <option value="blue">Blue
    </option>
</select>

经常被忽视,超级简单

name属性需要允许以数组形式通过
$\u POST
发送多个选择。例如:

<select name="my_meta_box_select[]" id="my_meta_box_select" multiple="" style="width:300px; height:400px;">
    <option value="red">Red
    </option>
    <option value="blue">Blue
    </option>
</select>

红色
蓝色
请注意名称中的
[]
name=“my\u meta\u box\u select[]”


这与
multiple
属性一起,将允许
$\u POST
变量以数组形式包含所有选择。也就是说,
$\u POST['my\u meta\u box\u select']
将不仅仅是一个简单的值,而是一个数组,它将包含所有选择。

经常被忽略,超级简单

name属性需要允许以数组形式通过
$\u POST
发送多个选择。例如:

<select name="my_meta_box_select[]" id="my_meta_box_select" multiple="" style="width:300px; height:400px;">
    <option value="red">Red
    </option>
    <option value="blue">Blue
    </option>
</select>

红色
蓝色
请注意名称中的
[]
name=“my\u meta\u box\u select[]”


这与
multiple
属性一起,将允许
$\u POST
变量以数组形式包含所有选择。这就是说,
$\u POST['my\u meta\u box\u select']
将不仅仅是一个简单的值,而是一个数组,它将包含所有选择。

将[]添加到
名称中是正确的,但是我需要替换以下保存行:

update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );
以下是:

update_post_meta($post_id, 'my_meta_box_select', array_map( 'strip_tags', $_POST['my_meta_box_select'] ) );

非常感谢你的帮助,内特

将[]添加到
名称中是正确的,但是我需要替换以下保存行:

update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );
以下是:

update_post_meta($post_id, 'my_meta_box_select', array_map( 'strip_tags', $_POST['my_meta_box_select'] ) );

非常感谢你的帮助,内特

对于多个选择字段,请确保将其设置为数组
name=“my\u meta\u box\u select[]”
将使您的
$\u POST['my\u meta\u box\u select']
实际包含作为数组的所有值。然后你可以循环浏览。这真是个好消息!非常感谢你!要发布一个官方答案,这样它就更加合法:)对于多个选择字段,请确保将它们设置为数组
name=“my\u meta\u box\u select[]”
将使您的
$\u POST['my\u meta\u box\u select']
实际包含作为数组的所有值。然后你可以循环浏览。这真是个好消息!非常感谢你!将发布一个官方答案,这样它就更合法了:)它似乎将其保存为一个数组,但当我这样做时:$testVar=get_post_meta($GLOBALS['post']->ID,'my_meta_box_select',true);打印(testVar);如果我运行foreach,它只会输出相同的“数组”。它似乎将它保存为一个数组,但我无法获取它的元素,不知何故,我用$testVar=get_post_meta($GLOBALS['post']->ID,“my_meta_box_select”,true)错误地获取了它;var_dump($testVar);给我字符串(5)“Array”,所以它似乎只保存单词“Array”而不是数组中的值,你知道如何纠正这个问题吗/在我的例子中,它甚至没有保存数组。我的选项值只是数字。它只是保存最后一组选项。我在name属性的末尾有[],同时也有multiple属性。它似乎将其保存为数组,但当我这样做时:$testVar=get\u post\u meta($GLOBALS['post']->ID,'my\u meta\u box\u select',true);打印(testVar);如果我运行foreach,它只会输出相同的“数组”。它似乎将它保存为一个数组,但我无法获取它的元素,不知何故,我用$testVar=get_post_meta($GLOBALS['post']->ID,“my_meta_box_select”,true)错误地获取了它;var_dump($testVar);给我字符串(5)“Array”,所以它似乎只保存单词“Array”而不是数组中的值,你知道如何纠正这个问题吗/在我的例子中,它甚至没有保存数组。我的选项值只是数字。它只是保存最后一组选项。我的名字属性的末尾有[],我还有多个属性。哇!很高兴你成功了!希望现在一切都很好:)呜!很高兴你成功了!希望现在一切都很好:)