我試圖讓選定的選項保持在以下選擇框中選中。 (選擇框位於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