有了这个代码,所选择的选项被保存到数据库:为什么不将选项保存到数据库?
<select name="menu-item-visibility[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true"
<option value="US" <?php $val = get_post_meta($item_id, 'locations', true); if (is_array($val)) { if (in_array("US", $val)) { echo "selected='selected'"; } else { echo ""; } } ?> >United States</option>
<option value="TH" <?php $val = get_post_meta($item_id, 'locations', true); if (is_array($val)) { if (in_array("TH", $val)) { echo "selected='selected'"; } else { echo ""; } } ?> >Thailand</option>
...
</select>
有了这个代码,他们是不是:
<select name="menu-item-visibility[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true" data-placeholder="Select Countries">
<?php
$countries = array('US' => 'United States', "TH" => "Thailand");
$vals = get_post_meta($item_id, 'locations', true);
foreach($countries as $key => $value) {
?>
<option value="<?php echo $key;?>"
<?php echo (is_array($vals) && in_array($key, $vals)) ? "selected='selected'" : ''; ?> >
<?php echo $value;?>
</option>
<?php
}
?>
</select>
为什么不呢?
这是选择如何发送到数据库:
/* Put locations in the database. */
function csmi_update_locations($menu_id, $menu_item_db_id, $args) {
$meta_value = get_post_meta($menu_item_db_id, 'locations', true);
if (isset($_POST[ 'menu-item-visibility' ][ $menu_item_db_id ])) {
$new_meta_value = $_POST[ 'menu-item-visibility' ][ $menu_item_db_id ];
if (!isset($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);
}
}
}
这里的要求,在查看源代码的HTML。
<p class="field-visibility description description-wide">
...
<select name="menu-item-visibility[4][]" id="edit-menu-item-visibility-4" class="chzn-select" multiple="true" data-placeholder="Select Countries">
<option value="US" > United States </option>
<option value="TH" > Thailand </option>
</select>
</p>
你能分享你的代码的一部分,它保存数据到数据库? – pes502
当然,会添加它。 – j8d
试试这个