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.03.05
4367
HTMLCSS プログラミング

CSSを使って役物文字の間を詰める方法【font-feature-settingsを使おう】

2021.03.26
3793
WordPress

【WordPress】カスタム投稿ページでタクソノミーのスラッグ・名前を取得する方法

2023.02.11
4549
WordPress

WordPressの【抜粋】からhtmlタグを削除する方法【the_excerpt()】

更新日:2022.05.18
2048