WordPressで検索結果をカスタム投稿タイプの記事に変更する方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

さて、今回は記事ではWordPressで検索結果をカスタム投稿タイプの記事に変更する方法を紹介したいと思います。

僕が依頼を受けた掲示板サイトにおいて「WordPress標準の検索フォームを使った際に掲示板のレスを抽出してほしい」という要望があったため、調べて実装してみました。

WordPressで検索結果をカスタム投稿タイプの記事に変更する方法

実装は簡単で、下記のようなコードをfunctions.phpに追加してください。

function search_filter_custom($query) {
  if(isset($_GET['s'])) $_GET['s'] = mb_convert_kana($_GET['s'], 's', 'UTF-8');
  if(!is_admin() && $query->is_main_query() && $query->is_search()) {
    $query->set('post_type', 'カスタム投稿タイプのスラッグ');
  }
}
add_action('pre_get_posts', 'search_filter_custom');

上記コード内にある「カスタム投稿タイプのスラッグ」と書かれた箇所に、検索対象にしたいカスタム投稿タイプのスラッグ名を入れてあげてください。

尚、複数のカスタム投稿タイプを対象にしたい場合は配列にすることで対応できます。

function search_filter_custom($query) {
  if(isset($_GET['s'])) $_GET['s'] = mb_convert_kana($_GET['s'], 's', 'UTF-8');
  if(!is_admin() && $query->is_main_query() && $query->is_search()) {
    $query->set('post_type', array('カスタム投稿タイプのスラッグ①', 'カスタム投稿タイプのスラッグ②'));
  }
}
add_action('pre_get_posts', 'search_filter_custom');

こんな感じです。

僕が依頼を受けた掲示板では「スレ(投稿タイプ:topic)」「レス(投稿タイプ:reply)」の2つの投稿データを検索結果に表示させたかったので、下記のコードになりました。

function search_filter_custom($query) {
  if(isset($_GET['s'])) $_GET['s'] = mb_convert_kana($_GET['s'], 's', 'UTF-8');
  if(!is_admin() && $query->is_main_query() && $query->is_search()) {
    $query->set('post_type', array('topic', 'reply'));
  }
}
add_action('pre_get_posts', 'search_filter_custom');

おわりに

以上、今回の記事ではWordPressで検索結果をカスタム投稿タイプの記事に変更する方法を紹介させていただきました。

つくりばのことが気になりましたか?

つくりばは、ココトモ・未来地図を自社で10年以上運営してきた知見をもとに、相談・コミュニティの開発と運営を支援しています。いきなりのご相談でなくて大丈夫です。まずは私たちの実績や考え方をご覧ください。

つくりばについて知る

← WordPressの一覧へ戻る

Webサービスの課題を、まずは無料相談で整理しませんか。

既存サービスの改善、新規立ち上げ、運用サポート、予算内での優先順位づけなど、今の状況に合わせてじっくりお話を伺います。まだ形になっていない段階のご相談も大丈夫です。

  • videocamオンライン対応
  • forum課題整理だけでも歓迎
  • payments概算費用の目安がわかる
無料相談を申し込む