実現したいこと
投稿一覧ページでページネーションを正常に動作させたい。
原因と対策がしりたいです。
前提
wordpress6.1.1にてプラグインを使わずページネーションを実装中です。
同様の問題を抱えている人のページは探索済み
発生している問題・エラーメッセージ
ページネーションの表示自体は上手くいくが
2ページ目以降のリンクを踏むとTOPページに飛ばされてしまいます。
該当のソースコード
wordpress
1<div class="tl-NewsList__wrapper"> 2 <ul class="tl-NewsList__items"> 3 <?php 4 $args = array( 5 'post_type' => 'post', 6 'posts_per_page' => 4, 7 'order' => 'DESC', 8 'paged' => $paged, 9 ); 10 $the_query = new WP_Query($args); 11 ?> 12<?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?> 13 14 // 記事一覧のソースが入る 15 <?php endwhile; ?> 16 </ul> 17 18// ここからページネーションの処理 19 <?php 20 global $wp_rewrite; 21 $paginate_base = get_pagenum_link(1); 22 if (strpos($paginate_base, '?') || !$wp_rewrite->using_permalinks()) { 23 $paginate_format = ''; 24 $paginate_base = add_query_arg('paged', '%#%'); 25 } else { 26 $paginate_format = (substr($paginate_base, -1, 1) == '/' ? '' : '/') . 27 user_trailingslashit('page/%#%/', 'paged');; 28 $paginate_base .= '%_%'; 29 } 30 if ($wp_query->max_num_pages > 1) { 31 $page_links = paginate_links(array( 32 'base' => $paginate_base, 33 'format' => $paginate_format, 34 'total' => $wp_query->max_num_pages, 35 'mid_size' => 1, 36 'type' => 'array', 37 'current' => ($paged ? $paged : 1), 38 'prev_text' => '前へ', 39 'next_text' => '次へ', 40 )); 41 if (strpos($page_links[0], 'prev page-numbers') === false) { 42 array_unshift($page_links, '<span class="prev page-numbers">前へ</span>'); 43 } 44 if (strpos($page_links[count($page_links) - 1], 'next page-numbers') === false) { 45 array_push($page_links, '<span class="next page-numbers">次へ</span>'); 46 } 47 $r = ''; 48 $r .= "<div class='pagination'>\n\t"; 49 $r .= join("\n\t", $page_links); 50 $r .= "\n</div>\n"; 51 echo $r; 52 } else { 53 echo '<div class="page-numbers">'; 54 echo ' <span href="#" class="prev page-numbers"><</span>'; 55 echo ' <span class="page-numbers current">1</span>'; 56 echo ' <span href="#" class="next page-numbers">></span>'; 57 echo '</div>'; 58 } 59 ?> 60<?php endif; ?> 61</div>
投稿ページの名称を変更しています
function.php
1/** 2 * 投稿ページのパーマリンクをカスタマイズ 3 */ 4function post_has_archive($args, $post_type) { 5 if ('post' == $post_type) { 6 $args['rewrite'] = true; 7 $args['has_archive'] = 'info'; //任意のスラッグ名 ←アーカイブページを有効に 8 $args['label'] = 'お知らせ'; //管理画面左ナビに「投稿」の代わりに表示される 9 } 10 return $args; 11} 12add_filter('register_post_type_args', 'post_has_archive', 10, 2); 13add_filter('post_type_archive_link', function ($link, $post_type) { 14 if ('post' === $post_type) { 15 $post_type_object = get_post_type_object('post'); 16 $slug = $post_type_object->has_archive; 17 $link = get_home_url(null, '/' . $slug . '/'); 18 } 19 return $link; 20}, 10, 2); 21function add_article_post_permalink($permalink) { 22 $permalink = '/info' . $permalink; 23 return $permalink; 24} 25add_filter('pre_post_link', 'add_article_post_permalink'); 26function add_article_post_rewrite_rules($post_rewrite) { 27 $return_rule = array(); 28 foreach ($post_rewrite as $regex => $rewrite) { 29 $return_rule['info/' . $regex] = $rewrite; 30 } 31 return $return_rule; 32} 33add_filter('post_rewrite_rules', 'add_article_post_rewrite_rules');
試したこと
Rewrite Rules Inspectorツールで上書き処理を追加 → ダメ
管理画面で最大表示投稿数を1にするなど↓こちらの対策は全て試しましたがダメでした
https://webimemo.com/wordpress/1813
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー