カテゴリーページパーマリンクから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にコピペしましょう。
ページネーションのエラーが回避されるはずです。
以上で解説を終わります。
まとめ
ページネーション分投稿記事がないと気づかない事で盲点でした。
本記事を参考に修正してみてください。
以上で解説をおわります。
目次