Часто игнорируется, супер просто.
Атрибут 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'] ) );
Спасибо alot для помощи Nate!