Learning site for website creation

29:検索結果一覧表示用テンプレート作成

  • 投稿日:2018年11月06日

WordPressは用途に応じたテンプレート名があらかじめ決めれています。主なテンプレート名は以下です。

front-page.php フロントページ表示用テンプレート
home.php 主に固定ページの上にあるブログ投稿一覧表示用テンプレート
single.php 投稿詳細ページ表示用テンプレート
page.php 固定ページ表示用テンプレート
archive.php アーカイブ一覧全般表示用テンプレート
category.php カテゴリー一覧表示用テンプレート
tag.php タグ一覧表示用テンプレート
search.php 検索結果一覧表示用テンプレート
date.php 日付別一覧表示用テンプレート
404.php 404エラー表示用テンプレート
searchform.php 検索フォーム用テンプレート
comments.php コメント用テンプレート

「search.php」はサイト内検索フォームから検索した「検索結果一覧」を表示する時に使用するテンプレートです。

このテンプレートが呼び出される時、メインループデータには検索結果データが入ります。

検索結果表示用テンプレート

検索結果一覧に使用できる「search.php」を新しく作成します。

search.php

<?php get_header(); ?>

<?php
// 検索値取得
$s = $_GET['s'] ? $_GET['s'] : NULL;

// メインループ条件変更
$paged = max(1, get_query_var('paged'));
$args = array (
  'paged' => $paged,
  'post_status' => 'publish',
  'post_type' => 'post',
  's' => $s,
);
query_posts( $args );

// 検索結果の記事数
$found_posts = $wp_query->found_posts;
?>

  <div class="content">
    <div class="main">

<?php // 検索タイトル表示 ?>

      <div class="main-loop">
        <div class="inner">
        <h1><?php the_search_query();?> の検索結果:<?php echo $found_posts;?>件</h1>
<?php /***** メインループ開始 *****/ ?>
<?php if (have_posts()) :?>
<?php while (have_posts()) : the_post(); ?>
<?php $id = get_the_ID(); ?>
<?php // テンプレートパーツ読み込み:一覧 ?>
<?php get_template_part('content'); ?>
<?php endwhile; ?>
<?php else: ?>
<?php // テンプレートパーツ読み込み:記事なし ?>
<?php get_template_part('content','none'); ?>
<?php endif; ?>
<?php /***** メインループ終了 *****/ ?>

<?php // ページネーション ?>
<?php if (pagination()) : ?>
    <div class="pagination"><?php echo pagination(); ?></div>
<?php endif; ?>

        </div><!-- /.inner -->
      </div><!-- /.main-loop -->
    </div><!-- /.main -->
    <?php get_sidebar(); ?>
  </div><!-- /.content -->

<?php
get_footer();

調べてみよう

なぜメインループデータを上書きしているのか考えてみよう。

このページで出てくる関数

WordPress関数は「公式サイトのドキュメント」で確認しましょう。

WordPressプロパティ

$wp_query->found_posts

WordPress関数

get_header()

query_posts()

the_search_query()

have_posts()

the_post()

get_the_ID()

get_template_part()

get_sidebar()

get_footer()

オリジナル関数

pagination()

PHP関数

max()

array()

 

欠席者対応:wireframe11