WordPress 検索結果から固定ページを除外したい

曹 操 2018/03/03

WordPressの検索ですが昔は投稿のみが対象だったと記憶していますが
新しくなって固定ページも検索結果に含まれるようになったっぽいです。

固定ページを検索結果から除外したい

で、固定ページは検索結果から外したいと思いググる
下記のようなpre_get_postsでqueryを書き換えるやり方が多く出てきました。

しかし、上記の方法だと、
どのキーワードで検索してもpost_type="post"の記事が全て表示されてしまいました。。。

なので、比較的最近投稿された記事を探しました。
(wordpressの様な更新が多くノイズが検索にかかりやすい記事は投稿日はわかりやすく明記して欲しい!切実に!!)
ここでposts_searchフィルターを使う方法が書かれていましたので、
先ほど記述したSearchFilterを削除して下記をfunction.phpに記述しました。

これで、期待通り検索結果がpost_type="post"のものだけになりました!

カスタム投稿タイプを検索結果に含めたい

次に、カスタム投稿タイプnewsも検索に含めたいと思いました。

どうやらposts_searchの$searchはクエリーのWHERE文になるようなので、ここでpost_type = 'news'を追加すればうまく行きそうな気がします。

上記の様にWHERE文に追加しました。
しかし、検索結果にはpost_type = 'post'のものしか表示されませんでした。。。

一度function.phpに記述した絞り込みの処理をコメントアウトして検索結果を見てみたところ、どうやら元々のクエリにカスタム投稿タイプが含んでないっぽい!という事が解りました。
(カスタム投稿タイプは検索結果に出てこなかった)

なので、pre_get_postsアクションで検索時にpost_typeを追加してみました。

 

この記事を書いた人:

曹 操

あるデザイン会社を勤めています、日々はウェブデザイン関連のコーディングやグラフィックデザインの仕事しています。

関連記事