您应该能够执行该答案中描述的类似操作,并从wp_category_dropdown
使用wp_dropdown_cats
, 但对于选项,而不是选择eg。
add_filter(\'wp_dropdown_cats\', \'wp_dropdown_categories_multiselect\');
function wp_dropdown_categories_multiselect($output) {
$valuekey = \'valuekey\'; // set to \'name\' argument passed
// check this is the correct dropdown
if (strstr($output,\'name="\'.$valuekey.\'"\')) {
// add multiple to select (you may already have this)
$output = str_replace(\'<select \',\'<select multiple \',$output);
// add square brackets to the name key
$output = str_replace(\'name="\'.$valuekey.\'"\',\'name="\'.$valuekey.\'[]"\',$output);
$selectedvalues = get_option($valuekey);
// make sure there is a selected value
if (count($selectedvalues) > 0) {
// loop through the selected values
foreach ($selectedvalues as $value) {
// add the selected to each selected value
$output = str_replace(
\'<option value="\'.$value.\'"\',
\'<option value="\'.$value.\'" selected="selected"\',
$output
);
}
}
}
return $output;
}
注意:假设您正在将值作为选定值的数组保存到选项表中。例如:。
$valuekey = \'valuekey\';
if (isset($_REQUEST[$valuekey])) {
$selectedvalues = $_REQUEST[$valuekey];
if (!add_option(\'valuekey\',$selectedvalues)) {
update_option(\'valuekey\',$selectedvalues);
}
}
当然,使用
str_replace
每次出现的第一个值必须与输出完全匹配,因此可能需要进行一些调试才能使其工作。