神奈川県伊勢原市在住のkusuのサイトです!ホームページ制作のご依頼等承っております!

【WordPress】アーカイブページでページャーがうまく動かない時の対処法

2019.11.08
WordPress

 WordPressで作ったサイトで、アーカイブページにページャーを設置したのに何故か2ページ目にいっても記事が変わっていない…なんてことが結構あったりします。

ちなみにここでいうアーカイブページとは

  • index.php
  • category.php
  • archive.php

のことを指します。

そんなアーカイブページで、例えば1ページにつき10件記事を表示するような記述をしても、いざ2ページ目にいっても1ページ目と同じ記事が表示されている…といった症状ですね。

そこで今回はページャーがうまく動かない時の対処法についてご紹介したいと思います!

表示設定の件数を1にする

 WordPressの管理画面に入り、

設定 → 表示設定

のページにいくと、以下の画像のように“1ページに表示する最大投稿数”はデフォルトでは10件になっています。

サイトのデザインによっては1ページにつき10件以下で記事を一覧表示させたい…といった場合に、設定画面での件数より少ない数字だと2ページ目がうまく取得できない…といった現象が起きてしまうので、まず初めに以下の画像のように“1ページに表示する最大投稿数”を1件に変更しましょう。

アーカイブページのPHPファイルに一覧ページ用のPHPを記述する

 表示件数の設定が完了したら、次にアーカイブページのPHPファイルに一覧ページ用のPHPを記述しましょう。

今回は

1ページにつき6件、投稿記事を表示させる

という条件で設定したいと思います。

まず、デフォルトとなるHTMLを以下のように記述しました。

<ul>

	<li><a href="記事ページへURL">記事タイトル</a></li>
	<li><a href="記事ページへURL">記事タイトル</a></li>
	<li><a href="記事ページへURL">記事タイトル</a></li>
	<li><a href="記事ページへURL">記事タイトル</a></li>
	<li><a href="記事ページへURL">記事タイトル</a></li>
	<li><a href="記事ページへURL">記事タイトル</a></li>

</ul>

上記ソースにて、自動で記事を取得するには以下のようにPHPを記述してあげることで、ページャーがちゃんと動く一覧ページを作成することができます!

<ul>

	<?php
		$paged = get_query_var('paged') ? get_query_var('paged') : 1;
		query_posts( $query_string.'&posts_per_page=6&post_type=post&paged='.$paged);
	?>
	<?php if(have_posts()): ?>

		<?php while(have_posts()): the_post(); ?>

			<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	
		<?php endwhile; ?>

	<?php endif; ?>

</ul>

表示件数を設定する

 まず、表示件数は上記コードの5行目にある

posts_per_page=6

にて設定しています。

そのため、1ページに10件表示させたい!とした場合にはここの数字を10に変えた

posts_per_page=10

にすることで1ページにつき10件表示されるようになる…ということですね。

ちなみにページャーは使わず、1ページに記事を全件表示させたい!という際には

posts_per_page=-1

上のように―1と数値を設定してあげることで表示可能になります。

投稿タイプを指定する

 続いて投稿タイプを指定しましょう。

上記コードの5行目にある

post_type=post

にて投稿タイプを設定しています。

今回は投稿記事を一覧表示させたいため、postとしていますが、例えばカスタム投稿・customの記事を一覧表示させたい!となった時には

post_type=custom

とすることでカスタム投稿・customの記事が表示されるようになります!

≪応用その1≫古い記事から表示させたい場合は?

 上記でページャーがちゃんと動く記事一覧ページを作成することは可能ですが、上記コードだと新しく投稿された記事順に表示されます。

ここで、もし古い記事順に投稿を表示させたい!となった場合は以下のようにPHPを記述してあげましょう。

<ul>

	<?php
		$paged = get_query_var('paged') ? get_query_var('paged') : 1;
		query_posts( $query_string.'&posts_per_page=6&post_type=post&&order=ASC&paged='.$paged);
	?>
	<?php if(have_posts()): ?>

		<?php while(have_posts()): the_post(); ?>

			<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	
		<?php endwhile; ?>

	<?php endif; ?>

</ul>

上記の5行目のように

order=ASC

を追記してあげることで、古い記事順に表示されるようになります!

≪応用その2≫特定のカテゴリーに属する記事の一覧ページを表示させたい場合は?

 記事一覧ページを作る際に、特定のカテゴリーの属する記事のみ表示させたい!となる場合があります。

例えば、カテゴリーID・2に属している記事を一覧で表示させたい!という場合には、以下のようにPHPを記述しましょう。

<ul>

	<?php
		$paged = get_query_var('paged') ? get_query_var('paged') : 1;
		query_posts( $query_string.'&posts_per_page=6&post_type=post&&cat=2&paged='.$paged);
	?>
	<?php if(have_posts()): ?>

		<?php (have_posts()): the_post(); ?>

			<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	
		<?php endwhile; ?>

	<?php endif; ?>

</ul>

上記の5行目にある

cat=2

でカテゴリーID・2に属する記事を一覧で表示させるよう設定しています。

なので、例えばカテゴリーID・5に属する記事を一覧で表示させたい!となった場合には

cat=5

としてあげることでカテゴリーID・5に属する記事を一覧で表示させることが可能になります!

まとめ

 以上がページャーがちゃんと動くようになる記事一覧ページのPHPでした!

自分も記事一覧ページの時にページャーがうまく動かず、2ページ目がちゃんと表示されない…ということが多々あったので、今回改めて調べられてよかったな、と思いました(^^;)

スポンサーリンク
検 索