我使用以下代码从用户那里获取国家/地区代码列表,并将其分配给名为"位置"的字符串。
<input
type="text"
class="widefat code"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-visibility[<?php echo $item_id; ?>]"
value="<?php echo esc_html( get_post_meta( $item_id, 'locations', true ) ); ?>" />
<?php echo 'Enter 2-digit country codes separated by commas, e.g. US,CA,SG' ?></br>
如果我想改用以下多选下拉菜单,如何将值作为逗号分隔的列表(字符串(传递给"位置"? 即"美国,加拿大,新加坡">
<select name="chzn-select" class="chzn-select" multiple="true">
<option value="KH">Cambodia</option>
<option value="CM">Cameroon</option>
<option value="CA">Canada</option>
<option value="SG">Singapore</option>
<option value="US">United States</option>
</select>
编辑:
以下是变量当前到达数据库的方式:
function update_option_text( $menu_id, $menu_item_db_id, $args ) {
$meta_value = get_post_meta( $menu_item_db_id, 'locations', true );
$new_meta_value = stripcslashes( $_POST['menu-item-visibility'][$menu_item_db_id] );
if( '' == $new_meta_value ) {
delete_post_meta( $menu_item_db_id, 'locations', $meta_value );
}
elseif( $meta_value !== $new_meta_value ) {
update_post_meta( $menu_item_db_id, 'locations', $new_meta_value );
}
}
更新:
所选值现在将发送到数据库。但是我似乎可以弄清楚如何在保存表单后保持所选值处于选中状态。
这是我通过蛮力使其工作的非工作尝试:
<option value="AF" <?php $locations = get_post_meta( $item_id, 'locations', true); if(in_array("AF", $locations ))){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
我走在正确的轨道上吗?
只需将select
框视为数组,如下所示:
<select name="chzn-select[]" class="chzn-select" multiple="true">
和你的PHP代码:
<?php
if(!empty($_POST["chzn-select"])) {
$val = implode(",",$_POST["chzn-select"]);
}
?>