WordPress のページで投稿記事を読み込む方法についての解説

WordPress のページで投稿記事を読み込む方法を紹介します。通常はトップページなどでしか読み込めませんが、この方法で固定ページで読み込むことが可能です。

用意するもの

  • WordPress のページ。ページスラッグは blog とします。
  • テーマファイル page-blog.php

テーマファイル page-blog.php で作成しますと、blog というスラッグのページを読み込むときに、このテーマファイルを使用します。

記事を読み込むコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
	$paged = get_query_var('paged');
	query_posts('showposts=10&posts_per_page=10&paged=' . $paged);
?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<?php the_content(); ?>
<?php endwhile;endif; ?>
 
<div class="tablenav"><?php global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
	$paginate_format = '';
	$paginate_base = add_query_arg('paged', '%#%');
} else {
	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
	user_trailingslashit('page/%#%/', 'paged');;
	$paginate_base .= '%_%';
}
echo paginate_links( array(
	'base' => $paginate_base,
	'format' => $paginate_format,
	'total' => $wp_query->max_num_pages,
	'mid_size' => 5,
	'current' => ($paged ? $paged : 1),
)); ?></div>
 
<?php query_posts($query_string); ?>

解説

以下に注目するべきところを解説していきます。

2行目: $paged = get_query_var(‘paged’);

現在何番目のページにいるかを取得します。のちに現在位置を元にデータベースから投稿を取得するかを決める際に使用します。

3行目: query_posts(‘showposts=10&posts_per_page=10&paged=’ . $paged);

showposts=10 で10記事表示、posts_per_page=10 でどれくらいの記事毎にページングするのか、paged=’ . $paged で現在のページ番号をいれていますので、ページングしたらちゃんとページングすることができます。これのどれかひとつが欠けてもいけませんので要注意です。

9行目〜25行目: div class=”tablenav”…

これはナビゲーションで下記のページのを参考にさせて頂いております。

27行目: query_posts($query_string);

元のクエリに戻します。これをやっておかないと、サイドバーで is_home() などを使ってると起動してしまいますので気をつけましょう。変えたら戻す癖を付けることでトラブルを招かなくて済みます。

コメント

コメントは受け付けていません。