固定ページでページネーション

wordpressで投稿新着一覧をトップに表示させたい場合、
外観→カスタマイズ→ホームページ設定、で「ホームページの表示」を「最新の投稿」にすればよくて
1ページに表示する件数とかも管理画面で決められるんですが。
今回はカテゴリーで絞ったり、カスタムフィールドの値で表示順を変えたり、その下にもまた別のカテゴリーの記事一覧をいれたりしたかったので
ホームページは固定ページにして、各ループをショートコードでよみこませてたんですね。

そしたら、、、ページネーションがきかない、、、、設置はできたんですが、
次ページボタン押しても、2、とか押しても、URLは/page/2とか書いてあるのに、表示されているのは一向に1ページ目の内容。

検索すると多数のサイトに方法が書いてあるんですが、どれやってみても変わらず。。

そこで私が取った手段。

まず、固定ページのthe_contentsの中にループがあるのがいけないのでは、、ということで
page.phpをコピーしてpage-top.php(トップの固定ページのslugがtopでした、というかhome.phpでよかったですかね)を作ることに。

テンプレートの中身は、まずheaderを読み込んでからメインループが始まっています。
メインループの中にwp_queryがあるからいけないんじゃないかな、、ということで、メインループ削除!
そして、この一覧の下には固定ページのエディタの内容を入れたいので、the_content();の前に、
ページネーションさせたいループをぶちこみます。

<?php
	$paged = get_query_var('page', 1); //現在のページを取得
	$args = array(
		'paged' => $paged,
		'posts_per_page' => '20', //1ページに表示する件数
		'post_type' => 'post', //投稿タイプ
		'category_name' => 'press', //表示するカテゴリー
		'post_status' => 'publish', //公開中の記事
		'meta_key' => 'post-num', //表示順を入れるカスタムフィールドスラッグ
		'orderby' => 'meta_value_num post_date', //入力した表示順→公開日順に表示
		'order' => 'DESC' //大きい順
	);
	$the_query = new WP_Query($args);
	if($the_query->have_posts()): ?>
<?php while($the_query->have_posts()) : $the_query->the_post(); ?>

	<!-- ここにループさせる内容がはいります -->

<?php endwhile; ?>
<?php endif; ?>
<?php if ($the_query->max_num_pages > 1) { //最大ページ数が1以上の場合に表示
           echo paginate_links(array(
                    'base' => get_pagenum_link(1) . '%_%', 
                    'format' => 'page/%#%/', //ページのURL
                    'current' => max(1, $paged), 
                    'total' => $the_query->max_num_pages,
		     'prev_text' => '<', //前へ で表示するテキスト
		     'next_text' => '>', //次へ で表示するテキスト
		     'end_size' => 1 //最初と最後、何ページまでページネーションに表示するか
        ));
    }
    wp_reset_postdata();
?>

わたしがひっかかりまくってたのは、
参考にしてたサイトがみんな、現在のページを取得するときに、

get_query_var( ‘paged’ ) ? intval( get_query_var( ‘paged’ ) ) : 1

とか

(int) get_query_var(‘paged’);

と書かれてたんですが、なぜかわたしの場合はそれではだめで、、
最終的にはwordpress codexにかかれていた、

get_query_var(‘page’, 1)

でおちついたというわけです。。これで思っていた表示にできました。
なんでだめだったんだろなーーーまだまだコーディングの長い道のりはつづく。。。

●参考サイト
関数リファレンス/get query var
【WordPress】固定ページでページャー付きの投稿一覧を表示

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


top