37:検索結果一覧表示テンプレートを追加
公開日:2019年07月15日
ウィジェットやヘッダーに追加した検索ウィンドウにキーワードを入力して検索してもテンプレート「index.php」の「最後の砦」が表示され、検索結果一覧が表示されない状況です。
検索結果一覧表示用テンプレート「search.php」を作成します。
専用テンプレート
必要に応じて専用のテンプレートを追加できます。他にも追加できるファイルがありますが主なファイルは以下です。
front-page.php | フロントページ表示用テンプレート |
home.php | 主に固定ページの上にあるブログ投稿一覧表示用テンプレート |
single.php | 投稿詳細ページ表示用テンプレート |
page.php | 固定ページ表示用テンプレート |
archive.php | アーカイブ一覧全般表示用テンプレート |
category.php | カテゴリー一覧表示用テンプレート |
tag.php | タグ一覧表示用テンプレート |
search.php | 検索結果一覧表示用テンプレート |
date.php | 日付別一覧表示用テンプレート |
404.php | 404エラー表示用テンプレート |
header.php | 共通ヘッダーパーツテンプレート |
footer.php | 共通フッターパーツテンプレート |
sidebar.php | 共通サイドバーテンプレート |
searchform.php | 検索フォーム用テンプレート |
comments.php | コメント用テンプレート |
検索結果一覧表示用テンプレート
優先度(高い ← → 低い) |
|
---|---|
search.php |
index.php |
テーマ内に専用テンプレートを追加
カテゴリ一覧表示テンプレートを複製し、検索結果一覧表示用テンプレート「search.php」を追加します。
フォルダ構成
- lesson01
- imgフォルダ
- category.php
- custom-page1.php
- custom-page2.php
- front-page.php
- functions.php
- index.php
- page.php
- screenshot.png
- search.php(category.phpを複製して追加)
- style.css
検索キーワード表示関数
カテゴリ一覧表示テンプレート「category.php」はタイトルにカテゴリ名を表示していました。
検索結果一覧テンプレート「search.php」では「検索キーワード」を表示するthe_search_query関数を呼び出します。
この関数はループ外で呼び出すことができます。
<?php the_search_query(); ?>
search.php
変更前
<?php get_header(); ?> <div class="blog"> <div class="inner"> <h2 class="title"> <?php $cat = get_the_category(); $catSlug = $cat[0]->slug; echo ucfirst( $catSlug ); ?> </h2> <div class="subtitle"> <?php single_cat_title(); ?>: <?php echo $wp_query->found_posts; ?>件 </div> <div class="flex"> <?php /***** メインループ開始 *****/ ?> <?php if (have_posts()) :?> <?php while (have_posts()) : the_post(); ?> <div class="flex-item"> <a href="<?php the_permalink(); ?>"> <div class="image"> <?php if (has_post_thumbnail()) { the_post_thumbnail('img_300_200'); } else { echo '<img src="'.get_template_directory_uri().'/img/no-image.png" alt="'.get_the_title().'">'.PHP_EOL; } ?> </div> <div class="item-title"><?php the_title(); ?></div> <div class="item-text"><?php the_excerpt(); ?></div> <div class="item-date"><?php the_time('Y年m月d日'); ?></div> </a> </div><!-- .flex-item --> <?php endwhile; ?> <?php endif; ?> <?php /***** メインループ終了 *****/ ?> </div><!-- .flex --> <?php // ページネーション ?> <?php if ( pagination() ) { echo pagination(); } ?> </div><!-- .inner --> </div><!-- .blog --> <?php get_footer();
変更後
<?php get_header(); ?> <div class="blog"> <div class="inner"> <h2 class="title"> <?php the_search_query(); ?>:検索結果 </h2> <div class="subtitle"> <?php echo $wp_query->found_posts; ?>件 </div> <div class="flex"> <?php /***** メインループ開始 *****/ ?> <?php if (have_posts()) :?> <?php while (have_posts()) : the_post(); ?> <div class="flex-item"> <a href="<?php the_permalink(); ?>"> <div class="image"> <?php if (has_post_thumbnail()) { the_post_thumbnail('img_300_200'); } else { echo '<img src="'.get_template_directory_uri().'/img/no-image.png" alt="'.get_the_title().'">'.PHP_EOL; } ?> </div> <div class="item-title"><?php the_title(); ?></div> <div class="item-text"><?php the_excerpt(); ?></div> <div class="item-date"><?php the_time('Y年m月d日'); ?></div> </a> </div><!-- .flex-item --> <?php endwhile; ?> <?php endif; ?> <?php /***** メインループ終了 *****/ ?> </div><!-- .flex --> <?php // ページネーション ?> <?php if ( pagination() ) { echo pagination(); } ?> </div><!-- .inner --> </div><!-- .blog --> <?php get_footer();
表示結果
このページで出てくる関数
WordPress関数は「公式サイトのドキュメント」で確認しましょう。
WordPress関数
WordPress変数
※欠席者対応:lesson28 – lesson29
同じカテゴリーのコンテンツ