2011-12-21 160 views
0

我正在使用用戶提交的帖子插件爲了讓用戶提交他們的圖片到我的WordPress的網站。每個圖像都上傳到一個類別中。這些類別在wordpress管理區域中設置,並使用以下代碼拉入提交表單。WordPress的排序類別下拉列表?

我唯一的問題是,這個網絡表單通過他們的類別ID不按字母順序排序來拉取類別。因此,當我添加一個類別時,即使它以字母A開頭,它也會出現在底部。

任何人都可以讓我知道如何編輯以下代碼,以ASC字母順序製作所有類別列表?

<li class="usp_category"> 
       <label for="user-submitted-category" class="usp_label"><?php _e('Categories'); ?></label> 
       <div> 
        <select class="usp_select" name="user-submitted-category" id="user-submitted-category"> 

         <?php foreach($settings['categories'] as $categoryId) { $category = get_category($categoryId); if(!$category) { continue; } ?> 
         <option class="usp_option" value="<?php echo $categoryId;?> "><?php $category = get_category($categoryId); echo htmlentities($category->name); ?></option> 
         <?php } ?> 
        </select> 
       </div> 
      </li> 
+0

怎樣的$設置[ '類']被填充?看起來,當它被填充時比現在更容易排序。 – Hobo 2011-12-21 22:22:22

+0

Do echo「

"; print_r($settings['categories']); echo "
」;並首先看到結構。變量本身並不顯示如何排序。 – 2011-12-21 23:36:11

+0

您很可能需要轉到創建$ settings數組並在那裏排序的代碼。 – 2011-12-21 23:37:12

回答

1

我實際上並不能試試這個,我也沒有IDEEA你的插件是如何工作的......但在我腦海中是做2個foreach循環最簡單的解決方案。這將是你裏面選擇< > < /選擇>:

<?php 
    $cats = array(); 
    // get what you need in an array 
    foreach($settings['categories'] as $catid) { 
     $cat = get_category($catid); 
     if(is_object($cat)) $cats[$catid] = $cat->name; // why htmlentities() ? 
    } 
    // sort by name 
    asort($cats); 
    foreach($cats as $catid => $catname) 
     echo "<option class=\"usp_option\" value=\"{$catid}\">{$catname}</option>"; 
    ?> 

希望工程/有助於