前提・実現したいこと
Wordpress初心者です。
1ページ目と2ページ目以降で表示件数を変更することは出来たのですが、ページナビの最大ページ数が合いません。
(そのため、1ページ目にある最終ページに遷移しようとするとページがありませんのエラーになります。)
WordPressで1ページ目と2ページ目以降で表示件数を変更する
やりたいことは上記リンク先の形になりますが、twentyfourteenの子テーマを使っていないため、
該当のソースコードの17行目「// twentyfourteen のコードを元にしています」から下の、ページナビの最大ページを合わせるためのコードが全く動作しません。
twentyfourteenの子テーマを使っていない場合に最大ページ数を合わせる方法をアドバイスいただきたいです。
参考画像
該当のソースコード
PHP
1define('POSTS_PER_PAGE_FOR_1ST',5); 2define('POSTS_PER_PAGE_FOR_2ND',10); 3 4add_action( 'pre_get_posts', 'mypaging' ); 5function mypaging($query) { 6 if ( is_admin() || ! $query->is_main_query() ) { 7 return; 8 } 9 10 $paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; 11 if ($paged >= 2){ 12 $query->set('offset',POSTS_PER_PAGE_FOR_1ST+($paged-2)*POSTS_PER_PAGE_FOR_2ND); 13 $query->set('posts_per_page',POSTS_PER_PAGE_FOR_2ND); 14 } 15} 16 17// twentyfourteen のコードを元にしています 18if ( ! function_exists( 'twentyfourteen_paging_nav' ) ) : 19 /** 20 * Display navigation to next/previous set of posts when applicable. 21 * 22 * @since Twenty Fourteen 1.0 23 */ 24 function twentyfourteen_paging_nav() { 25 // Don't print empty markup if there's only one page. 26 if ( $GLOBALS['wp_query']->max_num_pages < 2 ) { 27 return; 28 } 29 30 $paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; 31 $pagenum_link = html_entity_decode( get_pagenum_link() ); 32 $query_args = array(); 33 $url_parts = explode( '?', $pagenum_link ); 34 35 if ( isset( $url_parts[1] ) ) { 36 wp_parse_str( $url_parts[1], $query_args ); 37 } 38 39 $pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link ); 40 $pagenum_link = trailingslashit( $pagenum_link ) . '%_%'; 41 42 $format = $GLOBALS['wp_rewrite']->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : ''; 43 $format .= $GLOBALS['wp_rewrite']->using_permalinks() ? user_trailingslashit( 'page/%#%', 'paged' ) : '?paged=%#%'; 44 45 // この行を追加 46 $total = 1 + ceil(($GLOBALS['wp_query']->found_posts - POSTS_PER_PAGE_FOR_1ST)/POSTS_PER_PAGE_FOR_2ND); 47 48 // Set up paginated links. 49 $links = paginate_links( array( 50 'base' => $pagenum_link, 51 'format' => $format, 52 'total' => $total, 53 'current' => $paged, 54 'mid_size' => 1, 55 'add_args' => array_map( 'urlencode', $query_args ), 56 'prev_text' => __( '← Previous', 'twentyfourteen' ), 57 'next_text' => __( 'Next →', 'twentyfourteen' ), 58 ) ); 59 60 if ( $links ) : 61 62 ?> 63 <nav class="navigation paging-navigation" role="navigation"> 64 <h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'twentyfourteen' ); ?></h1> 65 <div class="pagination loop-pagination"> 66 <?php echo $links; ?> 67 </div><!-- .pagination --> 68 </nav><!-- .navigation --> 69 <?php 70 endif; 71} 72endif;