1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Wordpress】投稿ページネーション関数は固定ページじゃ使えない?だが断る!

Posted at

#本記事について
Wordpressの固定ページ(front-page.php)で投稿ページネーション関数(the posts pagination)を使用してカスタム投稿ページの投稿一覧表示と投稿ページネーションをつけようとしていたが、普通に使用すると上手く行きませんでした。
Googleで検索してみると固定ページじゃ駄目みたいな感じだったけど、気合?で乗り切れたので共有してみます。
#結論
以下のコードでうまくいきました。(カスタム投稿タイプ'photo'、1ページに表示する投稿5つの例)

front-page.php
					<?php
			$paged = get_query_var('page') ? get_query_var('page') : 1 ;
			set_query_var('paged', $page);
			$args = array('post_type' => 'photo',
						  'posts_per_page' => 5,
						  'paged' => $paged );
			
			$query = new WP_Query($args);       
		
			if ( $query->have_posts() ) :
                        while ( $query->have_posts() ) : $query->the_post();
                            get_template_part( 'content' );
                        endwhile;
						$GLOBALS['wp_query']->max_num_pages = $query->max_num_pages;
						the_posts_pagination( array(
							'mid_size' => 2,
							'prev_text' => __( 'Back', 'twenty-minutes' ),
							'next_text' => __( 'Next', 'twenty-minutes' ),
							'screen_reader_text' => __( 'Posts navigation', 'twenty-minutes' )
						) );
                    
                    else :
                         get_template_part( 'no-results', 'index' );    
                    endif;
                    ?>    

#解説
###■Point1:固定ページでは現在のページは’paged'じゃなくて'page'に入ってる。
なので、WP_Queryの$pagedに設定するのはget_query_var('paged')じゃなくて、get_query_var('page')になります。

###■Point2:the_posts_paginationはグローバル変数の'paged'を見てるようだ。
固定ページでは'paged'には初期値が入っているようだが、the_posts_paginationは'page'ではなく'paged'を見に行っているようなので、このままだとページネーションがうまくできなかった。
なので、無理やり?set_query_var('paged', $page);として'paged'に'page'の値を入れてあげたら、うまく動きました。

#備考
素直にarchive.phpとかを使えばいいかも・・・
どうしても固定ページでthe_posts_paginationを使いたかったら、参考にしてみてください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?