いつも大変お世話になっております。
現在WordPressのhome.phpで複数のカスタム投稿一覧ページを作成中です。
表示まではできましたが、3ページ目以降がNotFoundになってしまいます。
なんとなくページ送りがpost分しか取得できていないような感じがしているのですが、
解決方法が見つからず質問させていただきました。
実現したいこと
投稿(post)
カスタム投稿①(blog)
カスタム投稿②(faq)
上記3つの投稿を全て一覧に表示する。
1ページの表示件数は10件、ページ切り替えを行う。
発生している問題
ページネーションは4ページ目まで表示されていますが、
ページ切り替えで3ページ目以降が404エラーになります。
URLは「/whatsnew/?paged=2/」で表示しており、見ることができています。
現在の状態
1ページ目、2ページ目は問題なく表示されます。
試しにposts_per_pageを100にすると記事自体は全て表示されます。
利用したソースコード
投稿一覧
PHP
1<?php 2 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 3 $args = array( 4 'posts_per_page' => '10', 5 'post_type' => array('post','blog','faq'), 6 'post_status' => 'publish', 7 'caller_get_posts' => 1, 8 'paged' => $paged 9 ); 10 $posts = get_posts( $args ); 11 if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); 12?> 13 14記事ループ 15 16<?php endforeach; ?> 17<?php endif; wp_reset_postdata(); ?>
ページネーション(function.php)
function pagenation($limit = NULL, $post_typed = 'posts') { global $wp_rewrite; global $paged; global $wp_query; // 検索条件 $query = array(); if ($limit != NULL) { $query['posts_per_page'] = $limit; } if (count($query) != 0) { $wp_query->query($query); } $wp_query->query(array( 'post_type' => $post_typed, )); $paginate_base = get_pagenum_link(); 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 .= '%_%'; } if( $paged < 2 ) { $paged = 1; } $args = array( 'base' => $paginate_base, 'format' => $paginate_format, 'total' => $wp_query->max_num_pages, 'current' => $paged, 'show_all' => false, 'prev_next' => true, 'prev_text' => '«', 'next_text' => '»', 'type' => 'array', ); $pagenate_array = paginate_links($args); // 配列がある場合のみ if (is_array($pagenate_array) == TRUE) { $pagenate .= '<div class="wp-pagenavi">'; foreach ($pagenate_array as $key => $value) { if (preg_match('/current/', $value) == TRUE) { $class = ''; } else { $class = ''; } // $value = "<span class=\"{$class}\">".$value.'</span>'; // リンク追加 $pagenate .= $value; } $pagenate .= '</div>'; echo $pagenate; } }
【WordPress】カスタム投稿タイプにも対応しているページネーション用関数より
その他、不足している情報等ございましたらご指摘いただければ幸いです。
恐れ入りますが、ご教授のほどよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/07 09:56