読者です 読者をやめる 読者になる 読者になる

ファイヤードブログ

ディジタル・パブリッシングという観点から、Webサイト制作、電子書籍制作などを。※ブログリニューアル中

検索結果からカスタム投稿を除外するのは簡単だが…

メモ WordPress WebDev

 メモ。WordPressの検索結果はデフォルトのままだとすべてのカスタム投稿を含んでしまう。投稿だけに絞りたい場合は、次のようにfunctions.phpに書けばOK。setの第2引数は、配列でも渡せるので、複数のカスタム投稿タイプを指定したい場合は、そのようにすればいい。

<?php
function exclude_cpt_from_search_result( $query ) {
  if ( !is_admin() ) {
    if (is_search() ) {
      $query->set('post_type', 'post');
    }
  }
}
add_action( 'pre_get_posts', 'exclude_cpt_from_search_result' );

 運用&開発の実際的な問題としては、ただ投稿(post)だけ絞ってフォームを設置しているサイトというのが稀で、複数のカスタム投稿があれば、それぞれに対する検索が必要とされるということ。
 これをやろうとすると結構手間がかかる。まだベストプラクティスを見いだせていない。ここの検索結果を無理やり作ることはできたものの、無理やりすぎてページネーションが機能しなくなるなどのトラブルが起きた。解決したら続きの記事を公開したい。


関連するCodexリンク

12/5追記 コード部分を修正。