記事一覧

search.php を作成する

 posted by suzu
テンプレート作成のススメ

今回は、検索結果 (一覧) ページである search.php を作成します。
ウィジェットでもを配置して、サイト内検索ができるようにしておくと
便利ですね。

前々回の記事 「archive.php を作成する
前回の記事 「home.php を作成する
と同様、index.php の亜種です。

ですので、前々回、前回と同様、
index.php をコピーして search.php にリネームし、これをベースとします。

<?php get_header(); ?>

				<!-- 一覧表示部分ここから -->
				<h2 class="archive-title"><?php bloginfo('name'); ?></h2>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
				<div class="entry hentry">
					<h3 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
					<div class="entry-box">
						<span class="entry-date">
							公開:<time class="published" datetime="<?php the_time('c'); ?>"><?php the_time(get_option('date_format')); ?></time>
						</span> 
						<br /><?php the_category(', '); ?><?php the_tags('', ', '); ?>
					</div>
					<p class="entry-excerpt"><?php echo mb_substr(get_the_excerpt(), 0, 40); ?>...</p>
					<p class="entry-more"><a href="<?php the_permalink() ?>">続きを見る</a></p>
				</div>
<?php endwhile; else : ?>
				<p>記事がありません</p>
<?php endif; ?>

				<!-- 一覧表示部分ここまで -->

<?php get_footer(); ?>

ハイライト表示している部分が変更対象となります。
archive.php や home.php のときと同様、HTML タイトルの切り替えは
header.php に既に仕込み済みですので、
修正部分はメインコンテンツ内のタイトル表示と
ページネーションを表示する部分の組み込みになります。
検索結果のページなので、表示する記事がなかった場合の
文言表示もついでに変えておきましょうか・・・
 

<?php get_header(); ?>

				<!-- 一覧表示部分ここから -->
				<h2 class="archive-title">「<?php echo esc_html($s); ?>」の検索結果</h2>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
				<div class="entry hentry">
					<h3 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
					<div class="entry-box">
						<span class="entry-date">
							公開:<time class="published" datetime="<?php the_time('c'); ?>"><?php the_time(get_option('date_format')); ?></time>
						</span> 
						<br /><?php the_category(', '); ?><?php the_tags('', ', '); ?>
					</div>
					<p class="entry-excerpt"><?php echo mb_substr(get_the_excerpt(), 0, 40); ?>...</p>
					<p class="entry-more"><a href="<?php the_permalink() ?>">続きを見る</a></p>
				</div>
<?php endwhile; else : ?>
				<p>お探しの記事はありませんでした</p>
<?php endif; ?>
<?php
if (have_posts() && function_exists("pagination")) {
	// 一覧ページネーション
	pagination($wp_query->max_num_pages);
}
?>
				<!-- 一覧表示部分ここまで -->

<?php get_footer(); ?>

4行目のメインコンテンツ内のタイトルは、
検索ワードを埋め込んだ形で、『「[検索ワード]」の検索結果』
として表示します。 ($s には検索ワードが入ってきます)

18行目は、(全体として記事があろうがなかろうが) 検索結果が表示される
一覧ですので、表示記事がなかった際のメッセージ表示を
ちょっとだけ変更しています。

20行目から25行目まではページネーションの組み込み部分です。
組み込みに関しては archive.php や home.php の場合と全く同じです。
組み込み処理の詳細は 「archive.php を作成する」 を参照してください。
一覧ページネーションを出力している自作関数の具体的な処理内容は、
一覧ページネーション を表示する」 にて。
 

はい、終わりです。
一覧系のページの場合は、やっぱりどれも大差ないので、
一つ作ってしまえば、後は楽ですね。
これで、作成予定の一覧系のテンプレートは基本的な処理を
全て作り終えましたので、次回からは投稿ページや固定ページの
単独記事のページの作成にかかりたいと思ってます。
では、また次回・・・

関連記事

eyecatch_template

自作テーマの設置方法

前回の記事 「作成するテンプレートを整理する」 で 作成すべきテンプレートを拾い...

記事を読む

eyecatch_template

一覧ページネーション を表示する

実は、今回から次のテンプレート作成 (の解説) に取り掛かろうと 思っていたので...

記事を読む

eyecatch_template

必要なテンプレートの種類

WordPressテーマを作成するには、訪問者がアクセスするページ種類ごとに テ...

記事を読む

カレンダー

2019年7月
« 7月    
 123456
78910111213
14151617181920
21222324252627
28293031  
PAGE TOP ↑