
2021.01.12
ページネーションとの戦い
気づいたら朝の5時を迎えていた連休明け火曜日の朝。 忘れないうちにメモ。
やりたいこと
https://calullm.com/x-topazos/page/2/ これを https://calullm.com/x-topazos/?page=2 この形にしたい!!問題点
ワードプレスのパーマリンク設定が「/%category%/%postname%/」なので、 paginate_linksを使ってページネーションを表示すると、/page/n/の形で表示されてしまう様子。 formatやbaseurlを指定しても、/page/n/へリダイレクトが掛かって理想のパーマリンクにならない。解決のためにやったこと
1.ページネーションを表示させたいページ
<?php /* ---------------------------------- $paged ページネーションを動かすために必要な記述。 ()の中は、functionで設定したパラメーターと 同じものを設定する。 ---------------------------------------*/ $paged = (int) get_query_var('page'); $wp_query = new WP_Query(); $param = array( 'numberposts' => 10, 'paged' => $paged ); $wp_query->query($param); if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post(); ?> <!--ここにループさせたい内容を記述します--> <?php endwhile; endif; ?>
2.function.phpに記述
function pageNation2($wp_query,$paged){ if($wp_query->max_num_pages > 1){ echo '<div class="new-pagenation">'; echo paginate_links(array( 'format' => '?page=%#%', 'current' => max(1, $paged), 'show_all' => true, 'total' => $wp_query->max_num_pages, 'next_text' => '次へ', 'prev_text' => '前へ' )); echo '</div>'; } }
3.htaccess
<IfModule mod_rewrite.c> RewriteEngine On Redirect 301 /xxxxxx/page/(.*)/ https://calullm.com/xxxxxx/?page=$1 </IfModule>