搜尋排除頁面造成媒體庫問題的解決方法
為了讓搜尋結果排除統整頁面,我用「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 | WordPress.org
恍然大悟問題出在我functions.php裡那段搜尋結果排除頁面的語法,嘗試把那段語法拿掉,媒體庫搜尋功能確實恢復正常,於是我又繼續尋找「搜尋結果排除頁面」的其他語法,這次參考了wordpress論壇的另一篇文章:
Search only posts (not pages) | WordPress.org
把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; ?>
測試搜尋結果的確順利排除頁面了,可喜可賀!