小休止
  1. HOME
  2. 記事一覧
  3. 勉強

爺イッヌ(17)との暮らし

日に日に衰えていく身体、変わらぬ食欲───
今年でめでたく17歳を迎えた爺イッヌとの暮らしの記録、11月編です。

やりたいこと

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>

参考サイト様

ありがとうございました! WordPressで301リダイレクトを.htaccessで行う方法とは WordPress 固定ページ内でページネーションを使ったら404になる原因と対策

もくじ