2020.03.31

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で検索結果をカスタム投稿タイプの記事に変更する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む