[WP] 搜尋排除頁面造成媒體庫問題的解決方法

媒體庫搜尋功能失效,先尋找媒體庫分類外掛,最後終於找到問題源頭排除的始末。

*

為了讓搜尋結果排除統整頁面,我用「wordpress 搜尋排除頁面」當關鍵字找到了網路上的中文教學,並使用以下這段語法排除頁面,這時候我還不知道這段語法會帶來其他問題。

add_filter('pre_get_posts','wpjam_exclude_page_from_search');
 function wpjam_exclude_page_from_search($query) {
 if ($query->is_search) {
 $query->set('post_type', 'post');
 }
 return $query;
 }

但後來發現這段語法會造成「媒體庫」的搜尋功能同樣失效,一開始我不知道是因為這段語法造成的,努力尋找有沒有能讓媒體庫(media library )能夠分類的外掛,最後找到一個:

Media Library Categories

但這外掛免費版的只是讓你能分類,並不能在設定特色圖片時直接從分類裡叫出,那功能被放在付費版裡了。

 

所以我只好再回頭研究媒體庫搜尋功能失效的原因,查了很久,終於查到和我遇到同樣問題的人。

can’t search in media library

然後才恍然大悟問題出在我functions.php裡那段搜尋結果排除頁面的語法,嘗試把那段語法拿掉,媒體庫搜尋功能確實恢復正常,於是我又繼續尋找「搜尋結果排除頁面」的其他語法,這次參考了wordpress論壇的另一篇文章:

Search only posts (not pages) 

把functions.php的語法改成下面這段:

function is_type_page() { // Check if the current post is a page
	global $post;

	if ($post->post_type == 'page') {
		return true;
	} else {
		return false;
	}
}

再把loop語法中

<?php while (have_posts()) : the_post(); ?>

後面加上:

<?php if (is_type_page()) continue; ?>

測試搜尋結果的確順利排除頁面了,可喜可賀!事實證明使用wordpress會增加強迫自己碰英文的機會w

發佈留言