保存 "multiple select" 中的所有值

Saving all values in "multiple select"

我在 wordpress 中有一个具有多种 select 形式的元数据框。

<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>

目前一切顺利,selected 值已保存,我可以检索它,但我希望保存这两个值。

例如,我希望同时保存红色和蓝色,并能够从前端检索它。有什么办法可以做到这一点?有比 select 更好的形式吗?

目的是让用户从一个 select 字段到另一个 select 页面,然后保存第二个 select 字段。

select 1:

红色

蓝色

绿色

Select 2:

橙色

-按钮-

现在,如果用户从 select 1 select redblue 然后按 -button-,这些值将添加到 select 2. 当我现在按下更新页面时,我希望保存 select 中的所有值 2.

这就是我从当前 select 字段中保存的方式(但它只保存了一个 selected 值)

if( isset( $_POST['my_meta_box_select'] ) )
    update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );

经常被忽视,超级简单。

name 属性需要允许将多个选择作为数组通过 $_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_meta_box_select[]"

这与 multiple 属性一起,将允许您的 $_POST 变量将所有选择包含为一个数组。也就是说,$_POST['my_meta_box_select'] 将不仅仅是一个简单的值,而是一个包含所有选择的数组。

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

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'] ) );

非常感谢内特的协助!