カスタム投稿タイプと通常投稿にページャーの設置をしました。
###問題
通常投稿のページャーは問題なく動きますが、カスタム投稿タイプに関しては
・2ページ目までしか表示されない
・ワードプレスの管理画面から設定している表示件数分表示されず5件というどこからきたのかわからない件数分表示されてしまう(コードの中には特に表示件数の設定はされていないつもりです)
###実装したい事
・投稿がある場合は2ページ目以降も全て表示したい
・ワードプレスの表示件数とは関係なくカスタム投稿タイプに関しては1ページにつき10件表示したい
###前提
・カスタム投稿タイプはarchive-news.php、通常投稿はarchive.php
・wordpress管理画面の表示件数設定は6件
・archive.phpは他にメインループが使われている、archive-news.phpはサブループと一緒に使われている
・ページャーコードに関してはどちらのページも同じものを使用
###調べた自分なりの仮説
・archive-news.phpはサブループと使われている事で問題が起きていて、それぞれ別のページャー用のコードを記述しなければいけない?(使い回しできない?)→サブループで使えるというコードでページャーを作成してみたが同じ結果
・以前に通常投稿でページャーの2ページ目が表示されなかった時に、functions.phpからquery_posts('showposts=6');の記載を消去しています
もとのコードの理解がないままページャーを作成してしまい、どこを修正していいのかわからない状態です。(そもそもメインループサブループもままなりません)理解の薄い初心者の質問で申し訳ございませんが、ご助力をお願いします。
functions.php
//Pagenation function pagination($pages = '', $range = 2) { $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { echo "<div class=\"pagenation\">\n"; echo "<ul>\n"; if($paged > 1) echo "<li class=\"prev\"><a href='".get_pagenum_link($paged - 1)."'>Prev</a></li>\n"; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { echo ($paged == $i)? "<li class=\"active\">".$i."</li>\n":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>\n"; } } if ($paged < $pages) echo "<li class=\"next\"><a href=\"".get_pagenum_link($paged + 1)."\">Next</a></li>\n"; echo "</ul>\n"; echo "</div>\n"; } }
archive-news.php
<div class="main__wrapper"> <main class="news__contents"> <?php $args = array( 'post_type' => 'news', // 'posts_per_page' => get_option('posts_per_page'), 'posts_per_page' => 10, ); ?> <?php $my_posts = get_posts( $args ); ?> <ul class="news-items"> <?php global $post; if($posts): foreach($my_posts as $post): setup_postdata($post); $post_id = $post->ID; $link = get_post_meta($post_id,'link',true); ?> <?php if($link) : ?> <li class="news-list"> <a class="news-list__link" href="<?php echo $link; ?>"> <div class="news-list__set"> <time class="news-list__time" datetime="2019-02-01"><?php the_time(__('Y年n月j日')) ?></time> <?php if ($terms = get_the_terms($post->ID, 'cat_news')) { foreach ( $terms as $term ) { $term_slug = $term -> slug; echo ('<div class="news-list__label ') ; echo esc_html($term_slug) ; echo ('">') ; echo esc_html($term->name) ; echo ('</div>') ; } } ?> </div> <p class="news-list__txt"> <?php the_title(); ?> </p> </a> </li> <?php else : ?> <li class="news-list"> <a class="news-list__link" href="<?php the_permalink() ?>"> <div class="news-list__set"> <time class="news-list__time" datetime="2019-02-01"><?php the_time(__('Y年n月j日')) ?></time> <?php if ($terms = get_the_terms($post->ID, 'cat_news')) { foreach ( $terms as $term ) { $term_slug = $term -> slug; echo ('<div class="news-list__label ') ; echo esc_html($term_slug) ; echo ('">') ; echo esc_html($term->name) ; echo ('</div>') ; } } ?> </div> <p class="news-list__txt"> <?php the_title(); ?> </p> </a> </li> <?php endif; ?> <?php endforeach; endif;?> <?php //Pagenation if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?> </main>
足りない情報があればすみません。コメントいただけると助かります。
お手数ですがよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。