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.05.09
776
WordPress

【WordPress】投稿記事の本文を文字数制限して表示する方法

2023.05.28
669
WordPress

CodePenをwordpressの投稿記事に貼り付けよう!【簡単便利】

更新日:2019.11.28
706
HTMLCSS プログラミング

form(フォーム)タグでエンターキー送信を無効にする方法

2021.12.21
8249