WordPressカスタム投稿を検索結果に表示させるためには

カスタム投稿(post_typeがpostやpage以外)を検索結果に含まれたい場合があります。

やり方について、ひと苦労しましたので、メモします。

■方法1
pre_get_postsフィルタを利用し、post_typeを指定する方法。

function.php

search.php
※この方法の場合、search.phpでは、メインクエリを利用しますので、そのまま変更なしでご利用頂けます。

■方法2
posts_searchフィルタを利用し、post_typeを指定する方法。
※おまけに、キーワード指定した場合の検索例

function.php

search.php
※この方法の場合、search.phpでは、メインクエリを利用しますので、そのまま変更なしでご利用頂けます。

■方法3
WP_Query(サブクエリ)を利用する方法

mysearch.php

■方法4
SQL(サブクエリ)を自前で構築する方法。
mysearch.php

通常の場合、
方法1と方法2を利用することをお勧めします。
複雑なクエリを構築する場合、
方法3か方法4を利用します。