2012-09-01 52 views
0

類型有大約兩年前amazing conversation上,其中一些人想出了很好的解決方案,用於添加分類過濾器,以管理員屏幕自定義文章類型的WordPress的問答網站(見屏幕我指的是URL):添加分類篩選到自定義文章

http://[yoursite.com]/wp-admin/edit.php?s&post_status=all&post_type=[post-type] 

不管怎樣,我喜歡邁克爾的真棒貢獻,但到底用體細胞與從曼尼層次選項執行。我把它包裝在一個班級裏 - 這就是我喜歡做的事情 - 而且它幾乎可以工作。下拉顯示,但在下拉列表中的數值都在尋找在$ _GET屬性,你是通過過濾分類鼻涕蟲名。出於某種原因,我什麼都沒有得到。我看着下拉列表的HTML,它對我來說似乎沒問題。這裏有一個快速截圖爲一些背景:

enter image description here

你可以從這個告訴大家,我的文章類型,被稱爲「鍛鍊」和我想作爲一個過濾器來使用分類爲「動作」。那麼,這就是圍繞下拉列表中選擇HTML:

<select name="actions" id="actions" class="postform"> 
    <option value="">Show all Actions</option> 
    <option value="ate-dinner">Ate dinner(1)</option> 
    <option value="went-running">Went running(1)</option> 
</select> 

我還證實,所有的表單元素是DOM的一部分內。可是如果我選擇「走到運行」,然後點擊過濾器按鈕的URL查詢字符串回來沒有任何參考我挑選什麼。

更明確地說,有以下URL的第一次加載頁面:

/wp-admin/edit.php?post_type=exercise 

並按下過濾器按鈕,同時具有采摘後「走到暗戰」從行動過濾的選項:

/wp-admin/edit.php?s&post_status=all&post_type=exercise&action=-1&m=0&actions&paged=1&mode=list&action2=-1 

實際上,你可以看到一個參考的「動作」變化,但它的設置沒有和我現在看詳細看來我打「過濾器」頁面上的那一刻它的篩選器下拉重置到默認的「展所有行動「。誰能幫我這個?

順便說一句,我在這裏的附加PHP代碼(雖然我現在開始走向它是一個js問題瘦):gist

回答

1

我有同樣的問題,並增加了一個小的修復,如果分類$ _GET參數設置基本檢查。我希望它能幫助:

add_action('restrict_manage_posts', 'my_restrict_manage_posts'); 
function my_restrict_manage_posts() { 
    global $typenow; 
    $taxonomy = 'mytaxonomy'; // Change this 
    if($typenow != "page" && $typenow != "post"){ 
     $filters = array($taxonomy); 
     foreach ($filters as $tax_slug) { 
      $tax_obj = get_taxonomy($tax_slug); 
      $tax_name = $tax_obj->labels->name; 
      $terms = get_terms($tax_slug); 
      echo "<select name='$tax_slug' id='$tax_slug' class='postform'>"; 
      echo "<option value=''>Show All $tax_name</option>"; 
      foreach ($terms as $term) { 
       $label = (isset($_GET[$tax_slug])) ? $_GET[$tax_slug] : ''; // Fix 
       echo '<option value='. $term->slug, $label == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>'; 
      } 
      echo "</select>"; 
     } 
    } 
} 
相關問題