簡體   English   中英

如何獲得在WordPress多選框(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&hellip;', '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('&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 *參數給定的選項)將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM