WordPressで「特定の記事にだけバナーや共通コンテンツを表示したい」という場面はよくあります。この記事では、投稿IDやスラッグ、カスタムフィールド、カテゴリーなどの条件に応じて、共通パーツを柔軟に表示する方法を紹介します。
投稿IDで共通パーツを表示する
もっともシンプルなのが投稿IDを使った方法です。特定のIDを持つ記事だけに共通パーツを表示できます。
<?php
if ( is_single(123) || is_single(456) ) {
get_template_part('template-parts/special-content');
}
?>
上記の例では、IDが 123 または 456 の記事でのみ template-parts/special-content.php を読み込みます。
投稿スラッグで判定する方法
スラッグはURLにも使用される文字列なので、IDよりも可読性が高い場合があります。
<?php
if ( is_single('sample-post') || is_single('news-release') ) {
get_template_part('template-parts/special-content');
}
?>
投稿スラッグが sample-post や news-release の場合に限定して表示されます。
カスタムフィールドで制御する方法
記事ごとに表示・非表示を柔軟に切り替えたい場合は、カスタムフィールドが便利です。
<?php
$show_part = get_post_meta(get_the_ID(), 'show_special_part', true);
if ( $show_part === '1' ) {
get_template_part('template-parts/special-content');
}
?>
記事編集画面で show_special_part というカスタムフィールドに 1 を指定するだけで、共通パーツが表示されます。
特定のカテゴリーで表示する方法
記事のカテゴリーに応じて共通パーツを表示したい場合は、has_category() 関数を使います。
<?php
if ( has_category('campaign') ) {
get_template_part('template-parts/special-content');
}
?>
この例では「campaign」というスラッグのカテゴリーに属する記事にだけ表示されます。
よくある質問(FAQ)
Q. 特定の記事IDのときのみ共通パーツを表示するには?
A. is_single()にIDの配列を渡してis_single(array(1,2,3))で複数ID指定ができます。またはカスタムフィールドにフラグを立てて条件分岐する方法も柔軟に対応できます。
Q. カテゴリーとIDの組み合わせで表示するパーツを切り替えるには?
A. is_single()・in_category()・get_the_terms()などの条件タグを組み合わせて、テンプレート内で分岐します。get_template_part()を条件ごとに呼び分けると保守性が高まります。
Q. 条件に応じたパーツをショートコードで呼び出せるようにするには?
A. add_shortcode()で条件付き表示ロジックをラップしたショートコードを作成します。エディター上で[show_if_cat cat=”news”]コンテンツ[/show_if_cat]のように使えます。
まとめ
任意の記事にだけ共通パーツを表示する方法は、さまざまな条件で制御できます。以下に主な条件と使用する関数をまとめました。
| 条件 | 使用する関数 |
|---|---|
| 投稿ID | is_single(123) |
| スラッグ | is_single('post-slug') |
| カスタムフィールド | get_post_meta() |
| カテゴリー | has_category() |
条件分岐とget_template_part()を組み合わせることで、メンテナンス性と再利用性の高いテンプレートが構築できます。特定のキャンペーン記事にだけバナーを表示したいなど、用途に応じて活用してみてください。

