Written by Kasumi

カテゴリーページパーマリンクからcategoryを削除した際のページネーション不具合を修正

こんにちは、カスミです。

さて以下のようなお悩みをお持ちでしょうか?

カテゴリーページのパーマリンクからcategoryを削除した仕様に変更。

変更後、カテゴリーページのページネーションで次のページをクリックすると404ページへいき、エラーになる。

この不具合を解消したい。

本記事では、上記の不具合を解消する方法について解説致します。

カテゴリーページからcategoryを削除する方法については以下記事を参照してください。

functions.phpにコードを記載

//-----------------------------------------------------
// 【カテゴリーページのパーマリンクからcategoryを削除した際のページネーション404修正】
//-----------------------------------------------------
function category_link_custom( $query = array()) {

	// 子カテゴリーのエラーを回避する
	if (isset($query['category_name']) && strpos($query['category_name'], '/') === false && isset($query['name'])) {
		$parent_category = get_category_by_slug($query['category_name']);
		$child_categories = get_categories('child_of='.$parent_category->term_id);	
		foreach ($child_categories as $child_category) {
			if ($query['name'] === $child_category->category_nicename) {
				$query['category_name'] = $query['category_name'].'/'.$query['name'];
				unset($query['name']);
			}
		}
	}
	
	// カテゴリーページのページネーションを修正してエラーを回避する
	if(isset($query['name']) && $query['name'] === 'page' && isset($query['page'])) {
		$paged = $query['page'];
		if(is_numeric($paged)) {
			$query['paged'] = (int) $paged;
			unset($query['name']);
			unset($query['page']);
		}
	}
	
	return $query;
}
add_filter('request', 'category_link_custom');

エラーになる理由としては、パーマリンクからcategoryを消したことにより、カテゴリーページと判断できない事が原因のようです。

上記をfunctions.phpにコピペしましょう。

ページネーションのエラーが回避されるはずです。

以上で解説を終わります。

まとめ

ページネーション分投稿記事がないと気づかない事で盲点でした。

本記事を参考に修正してみてください。

以上で解説をおわります。

目次

関連記事

WordPress

【WordPress】特定のタクソノミー・タームだけテンプレートを分ける方法

2022.07.08
3522
HTMLCSS プログラミング

tableタグのtd、thに入ってる文字がスマホだとサイズがおかしくなる原因【改善】

2021.06.03
5677
WordPress プログラミング

WordPress投稿ページ内の関連・その他記事一覧で現在のページを除外する方法【wp_query】

2022.04.20
3185
WordPress

投稿記事に「次の投稿」・「前の投稿」のページネーション を入れる方法【ワードプレス】

更新日:2019.11.28
991