2013-03-22 59 views
2

我有一個網站,有一些自定義帖子類型與終極CMS插件創建。 在管理區域,當我進行新的搜索時,結果是好的,但在此之後,當我嘗試進行第二次搜索時,它會給我一個錯誤「無效的帖子類型」。WordPress的管理員搜索帖子錯誤 - 無效的帖子類型

我也認識到,網址是不正常:

在第一次搜索,網址是這樣的: http://www.site.com/wp-admin/edit.php?s=SearchTerm1&post_status=all&post_type=post&action=-1&m=0&cat=0&paged=1&mode=list&action2=-1

在第二次搜索,網址是一樣的東西:

http://www.site.com/wp-admin/edit.php?s=SearchTerm2&post_status=all&post_type=Array&_wpnonce=4d88f268e4&_wp_http_referer=%2Fwp-admin%2Fedit.php%3Fs%3DSearchTerm1%26post_status%3Dall%26post_type%3Dpost%26action%3D-1%26m%3D0%26cat%3D0%26paged%3D1%26mode%3Dlist%26action2%3D-1&action=-1&m=0&cat=0&paged=1&mode=list&action2=-1

並出現錯誤消息:「無效的帖子類型」。

我停用了所有插件,我將wordpress升級到最新版本3.5.1,我將永久鏈接重置爲默認值,但這個錯誤仍然存​​在。

任何幫助將不勝感激!

謝謝

+0

$ _GET ['post_type']的值是什麼? – 2013-03-23 10:27:29

+0

同樣在這裏尋找解決方案。 – amolv 2013-06-17 07:25:23

+0

有沒有人找到解決方案?我現在遇到它:( – Graham 2015-04-08 13:03:05

回答

1

我也遇到了這個問題,並認爲這是我在我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和使用而不是搜索 - 食品有如何設置了很好的例子。

相關問題