HOME  /WordPress(応用)
 /リストページをデザインする
2017年11月23日

リストページをデザインする

リストページは複数のドキュメントを一覧リストで表示するページです。

1ページに何個表示するか?は、「設定の表示設定」で指定します。

このリストページには下記の物があります。

種類 プログラム 備考
カテゴリページ category.php ウィジェットやパンくずからカテゴリを指定
アーカイブページ category.php ウィジェットやパンくずからアーカイブを指定
検索結果ページ search.php 検索結果が0の時のエラー処理が必要

1.プログラム比較

デザインの基本は投稿ページと同じなので、これを基準に解説します。

投稿ページプログラムは下記になります。

<?php get_header(); ?>
<div id='background'>
	<div id='post-contener'>
		<div id='post-contener-in'>
			<?php while(have_posts()):the_post(); ?>
				<div class='fa fa-clock-o'></div>【<?php the_modified_date('Y年m月d日');?>】
				<div id='my-before-title'></div>
				<h1><?php the_title(); ?></h1>
				<div id='my-after-title'> </div>
				<div class='contents'>
						<?php the_content(); ?>
				</div>
			<?php endwhile; ?>
		</div>
		<?php edit_post_link('編集','<','>',''); ?>
	</div>
	<div id='widget-contener'>
			<?php get_sidebar(); ?>
	</div>
</div>
<?php get_footer(); ?>

※1.タイトル(the_title())だけを表示しています。

※2.記事全体(the_content())を表示しています。

カテゴリとアーカイブのプログラム下記になります。

<?php get_header(); ?>
<div id='background'>
	<div id='post-contener'>
		<div id='post-contener-in'>
			<?php my_pagenavi($wp_query);?><!-- ページナビゲーション -->
			<?php while(have_posts()):the_post(); ?>
				<div class='list-box'>
					<div class='fa fa-clock-o'></div>【<?php the_modified_date('Y年m月d日');?>】
					<div id='my-before-title'></div>
					<h1><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a></h1>
					<div id='my-after-title'> </div>
					<div class='contents'>
						<?php the_excerpt(); ?>
					</div>
				</div>
			<?php endwhile;?>
			<?php my_pagenavi($wp_query);?><!-- ページナビゲーション -->
		</div>
	</div>
	<div id='widget-contener'>
			<?php get_sidebar(); ?>
	</div>
</div>
<?php get_footer(); ?>

※1.タイトル(the_title())にリンク先(the_permalink())を追加してます。

※2.記事は複数あるので個々の記事を「class=’list-box’」で囲み、記事の抜粋(the_excerpt())をここに表示しています。

※3.記事一覧の前後にページナビ(my_pagenavi($wp_query))を表示しています。
ぺージナビの詳細は自作のページネーションを作成するを参照してください。

検索結果のプログラムは下記になります。

<div id='background'>
	<div id='post-contener'>
		<div id='post-contener-in'>
			<?php if(have_posts()):?>
				<?php my_pagenavi($wp_query);?><!-- ページナビゲーション -->
				<?php while(have_posts()):the_post(); ?>
					<div class='list-box'>
						<div class='fa fa-clock-o'></div>【<?php the_modified_date('Y年m月d日');?>】
						<div id='my-before-title'></div>
						<h1><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a></h1>
						<div id='my-after-title'> </div>
						<div class='contents'>
							<?php the_excerpt(); ?>
						</div>
					</div>
				<?php endwhile;?>
				<?php my_pagenavi($wp_query);?><!-- ページナビゲーション -->
			<?php else:?>
				<div class='list-box'>
          <p>検索ワード=<?php the_search_query();?></P>
          <p>上記で検索した結果、対象ドキュメントはありませんでした。</p>
          <p>他のワードで再検索して下さい。</p>
        </div>
			<?php endif;?>
		</div>
	</div>
	<div id='widget-contener'>
			<?php get_sidebar(); ?>
	</div>
</div>
<?php get_footer(); ?>

※1.記事リストのループの前に「if(have_posts())」で検索結果記事の有無をチェックしています。

※2.検索結果の記事が無い場合はエラーメッセージを出力しています。

2.CSSでデバイス対応処理を行う

ここでは投稿ページのデザインがそのまま採用されているので、「class=’list-box’」の所だけ設定している。

/********************/
/* 一覧リストの設定 */
/********************/
#post-contener-in .list-box{
	border:1px solid #c0c0c0;
	box-shadow:1px 1px 10px #c0c0c0;
	border-radius: 10px;
	padding:20px;
	margin-bottom:10px;}
#post-contener-in .list-box h1{
	font-size:20px;font-size:1.25rem;
	color:#400fff;font-weight:bold;}

※1.idは1ページの中に1回しか使えないのがルールなので「list-box」をクラスで指定しています。

※2.ドキュメントタイトルは一覧表示の時は大きすぎるので、少し小さめのサイズに変更しています。