我有一個Wordpress網站,有幾種產品。它們被添加爲帖子(只是將標籤更改爲產品),並且它們有兩個自定義分類法。我添加了一個下拉菜單,爲每個下面的代碼管理後屏幕上這些自定義分類法:在Wordpress上過濾帶有自定義分類法的帖子管理
add_action('restrict_manage_posts', 'product_type_filter');
function product_type_filter() {
global $typenow;
$post_type = 'post';
$taxonomies = array('linha','aplicacoes');
if ($typenow == $post_type) {
foreach ($taxonomies as $taxonomy) {
$selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);
wp_dropdown_categories(
array(
'show_option_all' => __("Todas as {$info_taxonomy->label}"),
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $selected,
'value_field' => 'slug',
'show_count' => false,
'hide_empty' => true,
)
);
}
};
}
這是創建和正確顯示2個下拉菜單(見截圖附後)。問題是,當您選擇該下拉列表的選項並點擊過濾器來過濾產品時,結果往往是錯誤的。我說通常是,因爲對於某些特定的分類法,過濾器起作用,這真的讓我感到困擾。是的,下拉菜單中顯示的每個選項都分配了產品。
wordpress admin post page screenshot
我設法注意到,過濾後的網址提交這個樣子的(當它的工作原理)來理解這個問題:
http://www.mysitedomain.com.br/wp-admin/edit.php?post_status=all&post_type=post&m=0&cat=0&lang=pt-br&linha=embare-cle-redonda&filter_action=Filtrar&paged=1
而且像這樣(當它返回時沒有職位,儘管事實上有帖子顯示符合標準):
http://www.mysitedomain.com.br/wp-admin/edit.php?s&post_status=all&post_type=post&action=-1&m=0&cat=0&lang=pt-br&linha=puruba&filter_action=Filtrar&paged=1&action2=-1
注意這個搜索參數添加到第二個url的開始? /wp-admin/edit.php? 小號& post_status =所有& post_type =交&行動= -1 & m = 0的&貓= 0 & LANG = PT-BR & linha = puruba & filter_action = Filtrar &尋呼= 1 &動作2 = -1
如果我刪除該參數,則加載正確的帖子。任何人都有如何解決這個問題的線索?我想這是一個WordPress的核心問題,但我不知道爲什麼它只發生在每個分類的某些條款。
順便說一句我跑的WordPress 4.8
不幸的是,沒有做到絕招。 但是,我注意到,當搜索框可用時,它總是會發生(只有在顯示帖子時它纔會顯示)。 因此,當您第一次過濾到「找不到任何帖子」,並且該頁面沒有搜索字段時,因此當我再次過濾該頁面時,查詢將起作用並顯示結果。 所以我猜這個問題與被添加到查詢中的搜索參數有關。有沒有辦法改變過濾器,以確保搜索參數不添加,如果該字段爲空? –
剛剛更新了我的答案 - 這是完整的功能,適用於我自定義帖子類型 - 顯然我將其改名爲帖子類型和分類到一些隨機名:) –
原來我們的兩個代碼都是正確的。在測試你的函數並得到相同的結果後,我去了我的插件並禁用了所有可能與搜索查詢搞砸的東西。 [搜索一切](https://wordpress.org/plugins/search-everything/)插件是一個罪魁禍首。對不起,我花了很長時間才意識到這一點,並且非常感謝您的幫助! –