Web制作で役立つメモをWEB MEMO LOG

2016.11.08

【WordPress】1ページ目と2ページ目以降で一覧記事の表示件数を変更する。それに合わせてナビゲーションのページ数を調整(WP-PageNavi)。

1ページ目の最初の記事だけ1カラム、その他は2カラムにした場合など、1ページ目と2ページ目以降で表示件数を変更したい場合がありますよね。
その方法をメモメモ。
それに合わせてページナビゲーション(プラグインのWP-PageNaviを使用している場合)を変更する必要があるので、そちらの方法をメモメモ。

▼functions.php

define('PAGE_1ST', 11);	// 1ページ目の件数
define('PAGE_2ND', 10);	// 2ページ目以降の件数
function change_posts_paging($query) {
// 管理画面は除外
if ( is_admin()  ) return;
// ホームのみ適用
if ( $query->is_home() ) {
  $query->set( 'posts_per_page', PAGE_1ST);	//1ページ目に表示する記事数
}
$paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
if ($paged >= 2){ // 2ページ目以降の場合
  $query->set('offset', PAGE_1ST + PAGE_2ND*($paged-2) );
  $query->set('posts_per_page', PAGE_2ND); // 2ページ目以降に表示させたい記事数
}}
add_action( 'pre_get_posts', 'change_posts_paging' );

▼core.php(plugins/wp-pagenaviフォルダ内)

default:
	// WP_Query
	$posts_per_page = intval( $query->get( 'posts_per_page' ) );
	$paged = max( 1, absint( $query->get( 'paged' ) ) );
	$total_pages = max( 1, absint( $query->max_num_pages ) );
	//追記
	if ( $query->is_home() ) {
		$total_pages = 1 + ceil(($GLOBALS['wp_query']->found_posts - PAGE_1ST)/PAGE_2ND);
	}
	break;

【参考】
WordPressで1ページ目と2ページ目以降で表示件数を変更する
[WordPress] 一覧の表示件数を1ページ目と2ページ目以降で変更

About Site

同じことを何度も検索していたりするんで、検索して解決したことを残そうと思いまして。