wordpressで記事に対するページネーションを作っています。
下記のコードでは新着記事が14件以上になったら2ページ目を増やしてくれるようになっているはずなのですが、
ページネーションが表示されません。
検証機能を使ってみてみるとページネーションのコードを囲っているdivタグは表示されているので
ページネーションも一応設置はされてると思うのですが…。
どうしたら表示されるようになるでしょうか。
テンプレートはtwentyseventeenの固定ページのテンプレートを使っています。
「現在のコード」
<!-- newPostBox --> <div class="newPostBox"> <!-- 新着記事の表示 --> <?php $args = array( 'posts_per_page' => 14 ); $posts = get_posts( $args ); foreach ( $posts as $post ): setup_postdata( $post ); ?> <!-- カテゴリー名取得 --> <?php $category = get_the_category(); $cat_id = $category[0]->cat_ID; $cat_name = $category[0]->cat_name; $cat_slug = $category[0]->category_nicename; ?> <!-- カテゴリー名取得 --> <!-- imgTextBox --> <div class="imgTextBox"> <p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p> <p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p> </div> <!-- imgTextBox --> <?php endforeach; wp_reset_postdata(); ?> <!-- 新着記事の表示 --> <!-- pagination --> <div class=”pagination”> <?php global $wp_rewrite; $paginate_base = get_pagenum_link(1); if(strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()){ $paginate_format = ''; $paginate_base = add_query_arg('paged','%#%'); } else{ $paginate_format = (substr($paginate_base,-1,1) == '/' ? '' : '/') . user_trailingslashit('page/%#%/','paged');; $paginate_base .= '%_%'; } echo paginate_links(array( 'base' => $paginate_base, 'format' => $paginate_format, 'total' => $wp_query->max_num_pages, 'mid_size' => 1, 'current' => ($paged ? $paged : 1), 'prev_text' => 'PREVIOUS', 'next_text' => 'NEXT', )); ?> </div> <!-- pagination --> <!-- pickupBox --> <div class="pickupBox"> <p class="pickTitle">ピックアップ記事</p> <!-- imgTextBox --> <div class="imgTextBox"> <?php query_posts(array('orderby' => 'rand', 'showposts' => 1)); if (have_posts()) : while (have_posts()) : the_post(); ?> <?php $category = get_the_category(); $cat_id = $category[0]->cat_ID; $cat_name = $category[0]->cat_name; $cat_slug = $category[0]->category_nicename; ?> <p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p> <p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p> <?php endwhile; endif; ?> </div> <!-- imgTextBox --> </div> <!-- pickupBox -->
「試したこと」
上記とは別のページネーションのコードを使ってみました。
こちらだと「1 of 0」とは表示されるのですが、2ページ目に飛べまぜん。
function pagination( $pages = 1, $range = 2, $show_only = false ) { $pages = (int) $pages; //float型で渡ってくるので明示的に int型 へ $paged = get_query_var('paged') ? get_query_var('paged') : 1; //表示テキスト $text_first = "« 最初へ"; $text_before = "‹ 前へ"; $text_next = "次へ ›"; $text_last = "最後へ »"; if ( $show_only && $pages === 1 ) { // 1ページのみで表示設定が true の時 echo '<div class="pagination"><span class="current">1</span></div>'; return; } if ( $pages === 1 ) return; // 1ページのみで表示設定もない場合 if ( 1 !== $pages ) { //2ページ以上の時 echo '<div class="pagination"><span>Page ', $paged ,' of ', $pages ,'</span>'; if ( $paged > $range + 1 ) { // 「最初へ」 の表示 echo '<a href="', get_pagenum_link(1) ,'">', $text_first ,'</a>'; } if ( $paged > 1 ) { // 「前へ」 の表示 echo '<a href="', get_pagenum_link( $paged - 1 ) ,'">', $text_before ,'</a>'; } for ( $i = 1; $i <= $pages; $i++ ) { if ( $i <= $paged + $range && $i >= $paged - $range ) { // $paged +- $range 以内であればページ番号を出力 if ( $paged === $i ) { echo '<span class="current">', $i ,'</span>'; } else { echo '<a href="', get_pagenum_link( $i ) ,'" class="inactive">', $i ,'</a>'; } } } if ( $paged < $pages ) { // 「次へ」 の表示 echo '<a href="', get_pagenum_link( $paged + 1 ) ,'">', $text_next ,'</a>'; } if ( $paged + $range < $pages ) { // 「最後へ」 の表示 echo '<a href="', get_pagenum_link( $pages ) ,'">', $text_last ,'</a>'; } echo '</div>', "\n"; } }
他にも色々なサイトのコードを使ってみましたが何も表示されませんでした。
回答2件
あなたの回答
tips
プレビュー