我试图让选定的选项保持在以下选择框中选中。 (选择框位于WordPress管理员的菜单页面中)。我已验证数据正在保存到数据库中,但我很难从数据库中获取数据,以便在保存页面后标记为给定选择框选择的选项。页面上有多个选择框。获取多个选择框选项以保持选中使用选择
商的选择框采用选择的选择jQuery插件的。这里有一个问题和答案,提供一些关于标记用JS选择的选项的指导:Chosen select an option by default with jQuery。我无法让它在页面上有多个选择框。
<script type="text/javascript">
jQuery(document).ready(function($){
$(".chzn-select").chosen();
});
</script>
<select name="locations[<?php echo $item_id; ?>]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true">
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
...
这是数据如何得到到数据库:
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['locations'][$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);
}
}
下面是我的非工作的尝试。如果我理解正确,可以将这些值设置为使用JS选择。但是我也无法做到这一点。任何援助非常感谢。
<option value="AF" <?php $val = implode(",",get_post_meta($menu_item_db_id, 'locations', true)); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
原来这里是文字输入是如何工作的:
<input
type="text"
class="widefat code"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="locations[<?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>
整个文件可以发现here。
UPDATE:(值 “AD” 是我的选择之一)
$val = get_post_meta($item_id, 'locations', true);
$val2 = array_filter(array_map('trim', explode(',', strtoupper(get_post_meta($item_id, 'locations', true)))));
var_dump($val);
echo "</br>";
var_dump($val2);
给人string(2) "AD"
和array(1) { [0]=> string(2) "AD" }
无论有多少个选项被选中,它只返回一个国家代码。
UPDATE:
这是最后的工作...
<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="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>
好吧,$ val没有返回所需的输出。在原文中查看我的更新。 – j8d
请检查更新后的答案 –
天才!有效!现在,让选项保持选择... – j8d