WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
WEB制作
[WordPress]カスタム投稿のフリーワード検索
WEB制作担当の木戸です。
WordPressで特定のカスタム投稿にフリーワード検索を実装する方法をご紹介します。
1.検索バーの表示
<?php get_search_form(); ?>
まず、検索バーを表示したい箇所に追加します。
上記の記述でデフォルトの検索バーが表示されます。
カスタム投稿だけにするためにカスタマイズしていきます。
2.テンプレートファイルの用意
<form method="get" id="search" action="<?php echo home_url('/'); ?>">
<input type="text" name="s" id="search-input" value="<?php the_search_query(); ?>" placeholder="検索内容を入力してください" />
<input type="hidden" name="post_type" value="example">
<button type="submit" accesskey="f" class="search-btn"></button>
</form>
searchform.phpという名前でファイルを用意します。
formのvalue=”example”をカスタム投稿のポストタイプに合わせます。
3.検索結果ページの作成
<h2>検索結果:<?php the_search_query(); ?></h2>
<?php
$args = array(
'post_type' => get_query_var( 'post_type', 'example' ), //カスタム投稿ポストタイプ
'posts_per_page' => 10, //表示数
'paged' => get_query_var( 'paged', 1 ), //ページングする場合には記載
'order' => 'DESC', //降順
'orderby' => 'date', //日付でソート
's' => get_search_query() //name=”s”
);
$wp_query = new WP_Query($args);
if ( $wp_query->have_posts()): while ( $wp_query->have_posts()): $wp_query->the_post();
?>
<!--
ここに検索結果で表示する内容を記述
-->
<div>
<a href="<?php the_permalink( $post ); ?>"><?php the_title(); ?></a>
</div>
<?php endwhile; ?>
<?php else: ?>
<!--
該当件数が0の場合に表示される内容を記述
-->
<div>
”<?php the_search_query(); ?>” キーワードに該当する記事は見つかりませんでした。
</div>
<?php endif; ?>
search.phpもしくはsearch-example(カスタム投稿のポストタイプ).phpという名前でファイルを用意します。
$argsにポストタイプ、表示件数などを設定します。
whileの中はarchive.phpで記事一覧を表示する時と同じようにカスタマイズします。
<?php the_search_query(); ?>
と記述すると、どんなワードで検索したか表示されます。
ここまでで特定のカスタム投稿だけの検索の実装が完了です。