我在wordpress中使用多重选择形式的metabox。
<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>
到目前为止,所选的值已保存,我可以检索它,但我希望保存这两个值。
例如,我希望保存红色和蓝色,并能够从前端检索它。有没有办法实现这个目标?是否有比选择更好的形式?
目的是让用户从一个选择字段到另一个选择字段中选择页面,然后保存第二个选择字段。
选择1:
红色
蓝色
绿色
选择2:
橙
- 按钮 -
现在,如果用户从red
选择blue
和select 1
,然后按-button-
,则会添加值以选择2.当我现在按更新页面时我希望保存选择2中的所有值。
这是我从当前选择字段中保存的方式(但它只保存一个选定值)
if( isset( $_POST['my_meta_box_select'] ) )
update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );
答案 0 :(得分:1)
经常被忽视,超级简单。
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']
不仅仅是一个简单的值,而是所有选择的数组。
答案 1 :(得分:0)
将{]添加到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'] ) );
非常感谢Nate的帮助!