固定ページでページネーションを表示させようとしていますがうまく実装出来ません。
やりたい事: 固定ページでページネーションを表示させる事です。
現状: functions.phpに設定してある関数は呼び出せているが(echoで確認しました)、表示がされないといった状態です。
ですがindex.phpだと表示されます。
参考にしているサイト
https://www.webdesignleaves.com/pr/wp/wp_func_pager.htmll#h5_index_16
url
1固定ページのurlです 2http://hogehoge/?page_id=21 3 4index.phpで表示出来る時(2をクリックした時) 5http://hogehoge/?paged=2 6 7なので固定ページurlは以下のようになるのではと予想しています。 8http://hogehoge/?page_id=21/?paged=2
view
1 <?php if(have_posts()) :?> 2 $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; 3 pagination( array( 4 'mid_size' => 1, 5 'prev_text' => '<i class="fas fa-chevron-left mr-2"></i>PREV', 6 'next_text' => 'NEXT<i class="fas fa-chevron-right ml-2"></i>', 7 'paged' => $paged, 8 )); ?> 9 <?php endif; ?>
functions
1function pagination( $args = array() ) { 2 3 $navigation = ''; 4 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 5 $query = new WP_Query($arg); 6 // 1ページのみの場合は出力しない 7 if ( $query->max_num_pages > 1 ) { 8 9 $args = wp_parse_args( 10 $args, 11 array( 12 'mid_size' => 1, 13 'prev_text' => _x( 'Previous', 'previous set of posts' ), 14 'next_text' => _x( 'Next', 'next set of posts' ), 15 'screen_reader_text' => __( 'Posts navigation' ), 16 'type' => 'list', //リストとしてマークアップ 17 ) 18 ); 19 20 // type に list 以外が指定されていたら list に強制 21 $args['type'] = 'list'; 22 23 // paginate_links() を使ってリンクを生成 24 $links = paginate_links( $args ); 25 26 if ( $links ) { 27 28 $patterns = array( 29 '#<li><a class=([\'\"]([^\'\"]*)[\'\"]) ([^>]*>[^<]*)</a></li>#', 30 '#<li><span class=([\'\"]([^\'\"]*)[\'\"])\s?([^>]*>[^<]*)</span></li>#', 31 '#<li><span (aria-current=[\'\"]([^\'\"]*)[\'\"]) class=([\'\"]([^\'\"]*)[\'\"])\s?([^>]*>[^<]*)</span></li>#', 32 ); 33 34 $replacements = array( 35 '<li class="page-item"><a class="$2 page-link" $3</a></li>', 36 '<li class="page-item disabled"><span class="$2 page-link" $3</span></li>', 37 '<li class="page-item active"><span $1 class="$4 page-link" $5</span><span class="sr-only">(現在のページ)</span></li>', 38 ); 39 40 ksort($patterns); 41 ksort($replacements); 42 $links = preg_replace($patterns, $replacements, $links); 43 44 //_navigation_markup() は使わずに nav 要素でマークアップ 45 $navigation = ' 46 <nav class="navigation %s" role="navigation" aria-label="%s"> 47 <div class="nav-links">%s</div> 48 </nav>'; 49 //nav 要素の aria-label の値には screen_reader_text の値を設定 50 $navigation = sprintf( $navigation, 'pagination', esc_html( $args['screen_reader_text'] ), $links ); 51 } 52 } 53 echo $navigation; 54 }
調べてみると$pagedがしっかり設定されていないと出来ないです、みたいな事が出てきたので色々試してみましたが、変わらずでした。
調べたサイト
https://takasuke.net/wordpress/pagination/
https://qiita.com/kymtgt/items/9eb90764ebc060fac297
https://shogo-log.com/setup-pagenation/
https://elearn.jp/wpman/function/paginate_links.html
初めての作業なので、理解が浅い部分があるかと思います。
どなたか詳しい方がいらっしゃいましたら、ご教授いただきたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー