【wordpress】特定のカスタム投稿のみ検索結果に表示させる方法

WORDPRESSのサイト内検索で特定のカスタム投稿タイプのみを検索結果に表示させる方法をご紹介します。

やりたいこと

  • ある検索フォームから特定のカスタム投稿タイプのみを検索結果に表示させたい
  • サイト内の全体の検索も残しておきたい

ソース

テンプレート.php

<form id="form" class="" action="<?php echo home_url(); ?>/" method="get">
<input name="s" type="text" placeholder="キーワードを入力"/>
<input type="hidden" name="post_type" value="【カスタム投稿タイプ名】">
<button type="submit">検索</button>
</form>

search.php

<?php
if ( !empty( $_GET[ 'post_type' ] ) ) {
global $query_string;
query_posts( $query_string . "&post_type=" . $_GET[ 'post_type' ] );
}
?>
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php else : ?>
<p>検索キーワードに該当する記事がありませんでした。</p>
<?php endif; ?>

いろいろ調べたのですがうまく動かず上記で動きました。もっとスマートの書き方がありそうですのであくまで参考までに。

関連記事