![](/img/trans.png)
[英]How to change value for 'options' and 'select' in wp_dropdown_categories?
[英]How do I get values pre-selected in a WordPress Multi select Box (wp_dropdown_categories)?
我試圖獲取以下wp_dropdown_categories調用,以根據用戶之前提交的內容預選擇值。 這是較大的用戶個人資料編輯表單的一部分。 這些值可以很好地拉入,但如果先前已選擇,則不會自動突出顯示。 任何幫助,將不勝感激!! job_ind_pref_call =自定義用戶配置文件字段。
</label> <?php
$sel = 0;
$sel1 = get_user_meta($user_ID, 'job_ind_pref_call', true);
if(isset($_POST['job_ind_pref_call'])) {
$sel1 = $_POST['job_ind_pref_call'];
}
if (isset($posted['job_term_cat']) && $posted['job_term_cat']>0) $sel = $posted['job_term_cat'];
global $featured_job_cat_id;
$args = array(
'orderby' => 'name',
'exclude' => 3,
'order' => 'ASC',
'name' => 'job_ind_pref_call[]',
'hierarchical' => 1,
'echo' => 0,
'class' => 'job_cat',
'selected' => $sel1,
'taxonomy' => 'job_cat',
'hide_empty' => false
);
$dropdown = wp_dropdown_categories( $args );
$dropdown = str_replace('class=\'job_cat\' >','class=\'job_cat\' multiple="multiple" size="6" onClick=GetMDDselections("job_ind_pref_call") ><option value="">'.__('Select a Line…', 'colabsthemes').'</option>',$dropdown);
echo $dropdown;
?> </p>
首先,WordPress工作人員建議您將wp_category_checklist()用於多個值。
如果您仍然堅持使用wp_dropdown_categories()
,則必須准備使用.. umum這種非官方的方法來使選定的選項起作用。
這是您需要做的:
1-將新的自定義參數和新的Walker類(我們將在步驟2中定義)傳遞給wp_dropdown_categories()
函數。 假設我們這樣調用函數:
<?php
wp_dropdown_categories( array(
'_selected' => $selected_cats_arr,
'walker' => 'CategoryDropdownMultiple'
) );
?>
2-創建一個新的Walker類,該類配置為根據新的自定義參數選擇選項。 Walker的代碼基於wp-includes / category-template.php中定義的Walker_CategoryDropdown
。
<?php
class Walker_CategoryDropdownMultiple extends Walker {
var $tree_type = 'category';
var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
function start_el( &$output, $category, $depth, $args, $id = 0 ) {
$pad = str_repeat(' ', $depth * 3);
$cat_name = apply_filters('list_cats', $category->name, $category);
$output .= "\t<option class=\"level-$depth\" value=\"".$category->term_id."\"";
// HERE IS THE ONLY CHANGE FROM THE ORIGINAL FILE
// We check our custom parameter which is an array instead of a single value.
if ( isset( $args['_selected'] ) && in_array( $category->term_id, $args['_selected'] ) )
$output .= ' selected="selected"';
$output .= '>';
$output .= $pad.$cat_name;
if ( $args['show_count'] )
$output .= ' ('. $category->count .')';
$output .= "</option>\n";
}
}
?>
筆記:
wp_dropdown_categories()
及更高版本中的單個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.