保存 "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 red
和 blue
然后按 -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'] ) );
非常感谢内特的协助!
我在 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 red
和 blue
然后按 -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'] ) );
非常感谢内特的协助!