我也遇到了這個問題,並認爲這是我在我functions.php文件功能,這是改變全球WordPress的查詢參數之一的結果。
聽起來像您編輯全局$query
對象。如果您使用鉤子(例如'pre_get_posts')並且操作了$query
對象,並且您不排除管理區域,則對查詢參數所做的任何更改也將應用於管理面板,並且在嘗試添加參數時會顯示該錯誤這不符合您的搜索。
例如:
比方說,你有你的網站搜索功能,當用戶輸入搜索並進入搜索結果頁面,你只想顯示名爲$searchable_posts
一個自定義後類型職位,那麼你會鉤添加到您的functions.php
文件是這樣的:
function searchfilter($query) {
if ($query->is_search && $query->is_main_query()) {
$query->set('post_type', $searchable_posts);
}
return $query;
}
add_filter('pre_get_posts', 'searchfilter');
這將讓這個全球任何默認$query
將只搜索具有匹配的職位類型的$searchable_posts
結果。但是,上面寫的方式意味着這也適用於管理面板中的任何全局$query
。
解決這個問題的辦法是構建您的查詢是這樣的:
function searchfilter($query) {
if ($query->is_search && $query->is_main_query() && !is_admin()) {
$query->set('post_type', $searchable_posts);
}
return $query;
}
add_filter('pre_get_posts', 'searchfilter');
添加在!is_admin()
意味着你的函數將排除在後端管理面板任何東西(見is_admin)。
另外,一個更安全的方式,如果你可以,而不是使用全局默認$query
是創建您自己的新WP_Query和使用而不是搜索 - 食品有如何設置了很好的例子。
$ _GET ['post_type']的值是什麼? – 2013-03-23 10:27:29
同樣在這裏尋找解決方案。 – amolv 2013-06-17 07:25:23
有沒有人找到解決方案?我現在遇到它:( – Graham 2015-04-08 13:03:05