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投稿】アイキャッチではなく最初の画像をサムネイルにする方法

更新日:2021.10.26
916
WordPress

【WordPress】記事詳細ページのURL末尾スラッシュを削除する方法

2022.05.29
1999
WordPress プログラミング

【簡単】wordpressでカテゴリーの順番を変更する方法【プラグインで解決】

2022.03.26
190
WordPress

【WordPress】404の場合、トップページへリダイレクトする方法

2022.06.27
1331