カスタム投稿タイプの条件分岐について

WordPressでは、標準の投稿タイプに加えて、カスタム投稿タイプを使用することができます。
カスタム投稿タイプは、特定のコンテンツを管理するために便利で、
例えば「イベント」や「製品」など、独自のコンテンツタイプを作成することができます。

この記事では、カスタム投稿タイプを条件分岐で表示する方法について解説します。
条件分岐を使うことで、特定のカスタム投稿タイプにのみ表示される内容や機能を追加できます。

カスタム投稿タイプとは?

カスタム投稿タイプ(Custom Post Type, CPT)は、WordPressのデフォルトの「投稿」や
「ページ」以外のコンテンツを管理するための仕組みです。
例えば、オンラインショップの場合、「商品」や「レビュー」などの
コンテンツをカスタム投稿タイプとして作成することができます。

カスタム投稿タイプは、register_post_type() 関数を使用して定義します。
これにより、管理画面で新しいコンテンツタイプを作成し、
それに対するページやアーカイブを表示できるようになります。

function create_custom_post_type() {
register_post_type( 'campaign', [
'labels' => [
'name' => 'キャンペーン',
'singular_name' => 'キャンペーン',
],
'public' => true,
'has_archive' => true,
'supports' => ['title', 'editor', 'thumbnail'],
]);
}
add_action( 'init', 'create_custom_post_type' );

カスタム投稿タイプを条件分岐で表示する

条件分岐を使うことで、特定のカスタム投稿タイプにのみ表示されるコンテンツや要素を
指定することができます。条件分岐を使用するには、
主に is_singular()is_post_type_archive() の2つの関数を使用します。

is_singular() を使った条件分岐

is_singular() は、現在表示されているページが単一の投稿(ページ、カスタム投稿タイプの投稿)で
あるかどうかを確認します。
これを使うことで、特定のカスタム投稿タイプの投稿ページだけでコンテンツを表示できます。

if ( is_singular( 'campaign' ) ) {
// 'campaign' 投稿タイプの単一投稿ページのみ表示
echo 'このページはキャンペーン投稿ページです。';
}

上記のコードは、カスタム投稿タイプ campaign の単一投稿ページにのみ表示される内容を表示します。

is_post_type_archive() を使った条件分岐

is_post_type_archive() は、カスタム投稿タイプのアーカイブページ
(例えば、すべてのキャンペーン一覧ページ)であるかを判別します。
これを使うことで、アーカイブページ専用の内容を表示することができます。

if ( is_post_type_archive( 'campaign' ) ) {
// 'campaign' 投稿タイプのアーカイブページのみ表示
echo 'ここはキャンペーンのアーカイブページです。';
}

このコードは、campaign 投稿タイプのアーカイブページ(すべてのキャンペーンのリストページ)で
のみ表示されます。

複数のカスタム投稿タイプを条件分岐で表示

複数のカスタム投稿タイプを条件分岐で処理したい場合は、
is_singular()is_post_type_archive() を組み合わせて使用できます。

例えば、eventcampaign という2つのカスタム投稿タイプがあり、
どちらかに該当する場合に特定の処理をしたい場合は、次のように書けます。

if ( is_singular( ['event', 'campaign'] ) ) {
echo 'イベントまたはキャンペーンの投稿ページです。';
}

これにより、event または campaign の投稿ページが表示されるときに、
共通の処理を行うことができます。

カスタム投稿タイプの条件分岐を使ったカスタマイズ例

特定のカスタム投稿タイプのページでのみ表示するカスタムフィールド

カスタム投稿タイプに特定のカスタムフィールドを追加して、
それを表示する場合にも条件分岐を使うことができます。

if ( is_singular( 'campaign' ) ) {
// 'campaign' 投稿タイプのページでのみカスタムフィールドを表示
$custom_field_value = get_post_meta( get_the_ID(), 'campaign_details', true );
if ( $custom_field_value ) {
echo 'キャンペーン詳細: ' . esc_html( $custom_field_value );
}
}

このコードは、campaign 投稿タイプのページでのみ
カスタムフィールド campaign_details の値を表示します。

カスタム投稿タイプのアーカイブページでウィジェットを表示

カスタム投稿タイプのアーカイブページでのみ特定のウィジェットを表示したい場合は、
以下のように条件分岐を使います。

if ( is_post_type_archive( 'campaign' ) ) {
// 'campaign' 投稿タイプのアーカイブページでのみウィジェットを表示
dynamic_sidebar( 'campaign-widget-area' );
}

まとめ

WordPressでは、カスタム投稿タイプを条件分岐で制御することで、
特定の投稿タイプやアーカイブページに対して個別のコンテンツやレイアウトを適用できます。
これにより、柔軟なカスタマイズが可能となり、サイトの管理がより効率的になります。

カスタム投稿タイプを利用した条件分岐は、サイトの拡張や特定のコンテンツを
整理する際に非常に有効です。自分のサイトに合った条件分岐を適切に使用して、
より魅力的なサイト作りを目指しましょう。