WordPressで特定カテゴリーに関連する複数のカテゴリーの投稿を表示する方法

WordPressでは、特定のカテゴリーを表示する際に、
関連する複数のカテゴリーからも投稿を表示することが可能です。
これにより、ユーザーは特定のカテゴリーを閲覧している際に、
他の関連する情報にもアクセスしやすくなります。
本記事では、sampleカテゴリーに関連する複数のカテゴリーを表示する方法について説明します。

目的

たとえば、sampleカテゴリーのページで、
sample-hogeなどの関連カテゴリーの投稿も同時に表示したい場合や、
他のカテゴリーでも同様のカスタマイズを行いたい場合があるでしょう。
これを実現するために、WordPressのpre_get_postsフックを利用して、
メインクエリをカスタマイズします。

具体的な実装

functions.phpにコードを追加する

まず、functions.phpに以下のコードを追加します。
このコードにより、sampleカテゴリーで関連するカテゴリーの投稿も表示できるようになります。

/**
* Modify the main query to include related sample categories.
*
* This function modifies the query for the 'sample' category to also include
* posts from their respective related categories.
*
* @param WP_Query $query The main query.
*/
function modify_sample_category_query($query) {
// 管理画面ではなく、メインクエリが対象かどうかを確認
if (!is_admin() && $query->is_main_query()) {
// 'sample'カテゴリーの場合、関連するカテゴリーも含める
if (is_category('sample')) {
$query->set('category_name', 'sample,sample-hoge');
}
// 'sample-event'カテゴリーの場合、関連するカテゴリーも含める
elseif (is_category('sample-event')) {
$query->set('category_name', 'sample-event,sample-event-hoge');
}
// 'sample-knowledge'カテゴリーの場合、関連するカテゴリーも含める
elseif (is_category('sample-knowledge')) {
$query->set('category_name', 'sample-knowledge,sample-manner-hoge,sample-flow-hoge,sample-knowledge-hoge');
}
}
}

// pre_get_postsフックを使ってメインクエリを変更
add_action('pre_get_posts', 'modify_sample_category_query');

カスタマイズの詳細

このコードでは、pre_get_postsフックを使用して、WordPressのメインクエリを変更しています。
以下がその仕組みです。

is_admin()

管理画面でのクエリには影響を与えず、フロントエンドでのみ動作します。

$query->is_main_query()

メインクエリかどうかを確認し、メインクエリのみを対象にします。

is_category()

特定のカテゴリーが表示されている場合に、そのカテゴリーに関連する他のカテゴリーも追加します。

例えば、sampleカテゴリーが表示されている場合には、
sample-hogeもクエリに含まれるため、これらのカテゴリーの投稿が一緒に表示されます。

同様に、sample-eventカテゴリーの場合には、sample-event-hogeの投稿も表示されます。
また、sample-knowledgeカテゴリーでは、
sample-manner-hogesample-flow-hogeなどの関連カテゴリーも含まれます。

カスタマイズの効果

このカスタマイズによって、たとえば以下のようなシナリオが実現できます。

  • sampleカテゴリーに訪れたユーザーは、他の関連するsample-hogeカテゴリーの情報も同時に確認できる。
  • sample-eventカテゴリーでは、sample-event-hogeのイベント情報がまとめて表示され、ユーザーが簡単に情報を把握できる。
  • sample-knowledgeカテゴリーでは、基礎知識だけでなく、mannerflowに関する情報も同時に提供されるため、総合的な理解を促進する。

まとめ

WordPressでカテゴリーごとの投稿を表示する際に、
関連するカテゴリーの投稿も表示するカスタマイズは、ユーザーエクスペリエンスを向上させ、
情報をより効率的に提供するのに役立ちます。
pre_get_postsフックを使うことで、柔軟にメインクエリを調整し、
さまざまなカテゴリー間の関連性を反映することが可能です。

これで、特定のカテゴリーに関連する投稿も含めて表示できるようになります。
ぜひ、この方法を活用して、ユーザーが必要とする情報にスムーズに
アクセスできるWebサイトを構築してみてください。