2013-02-18 34 views
0

我正在嘗試根據用戶以前提交的內容,獲得以下wp_dropdown_categories調用預先選擇的值。這是更大的用戶配置文件編輯表單的一部分。這些值很好地被拉入,但如果它們之前被選擇,則不會自動突出顯示。任何幫助,將不勝感激!! job_ind_pref_call =自定義用戶專業領域。如何獲取WordPress多選框中預先選定的值(wp_dropdown_categories)?

</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&hellip;', 'colabsthemes').'</option>',$dropdown); 
    echo $dropdown; 
?> </p> 

回答

0

首先,WordPress的工作人員建議您使用wp_category_checklist()多個值。

如果您仍然堅持使用wp_dropdown_categories()您必須準備使用.. ehum,非官方的方式來使選定的選項有效。

這裏就是你需要做的:

1 - 傳遞一個新的自定義參數和新Walker類(我們將在第2步中定義它)到wp_dropdown_categories()功能。比方說,我們調用函數這樣:

<?php 
wp_dropdown_categories(array( 
    '_selected' => $selected_cats_arr, 
    'walker' => 'CategoryDropdownMultiple' 
)); 
?> 

2 - 創建一個配置爲選擇基於我們新的自定義參數的選擇一個新的沃克類。 Walker的代碼基於中定義的Walker_CategoryDropdown wp-includes/category-template.php

<?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('&nbsp;', $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 .= '&nbsp;&nbsp;('. $category->count .')'; 
     $output .= "</option>\n"; 
    } 
} 
?> 

注:

  • 原因爲什麼我們不能用原來的選擇的說法是,它預計將在wp_dropdown_categories()和超越單一值。
  • 請注意,因爲我們對所選選項使用了自定義參數,所以自動選擇與* show_option_all *和* show_option_none *參數一起提供的選項將不起作用。
相關問題