WordPressでサイトを運営していると、特定のカテゴリーの記事にだけ共通のバナーを表示したいというケースがあります。たとえば、キャンペーン情報や広告など、特定ジャンルの記事にだけ案内を入れたい場合に便利です。
テンプレート内でカテゴリを判定する
まず、対象のカテゴリーに属する記事かどうかを判定するために in_category()
関数を使います。この関数は、投稿が特定のカテゴリに属しているかを判定してくれる便利な関数です。
<?php
if ( in_category( 'news' ) ) {
echo '<div class="custom-banner">';
echo ' <a href="/campaign/"><img src="' . get_template_directory_uri() . '/images/banner-news.jpg" alt="キャンペーンバナー"></a>';
echo '</div>';
}
?>
この例では、記事が「news」というスラッグのカテゴリに属している場合に、バナー画像を表示しています。
複数カテゴリを指定する場合
in_category()
は配列にも対応しているので、複数のカテゴリに対応したい場合は次のように書きます。
<?php
if ( in_category( array( 'news', 'campaign', 'pickup' ) ) ) {
// 共通のバナーを表示
}
?>
バナーを表示する場所
この処理は、通常 single.php
や content-single.php
に記述します。表示させたい位置、例えば本文の上や下など、目的に応じて挿入してください。
カスタム投稿タイプやタグと組み合わせる方法
より高度な制御が必要な場合は、has_term()
や is_singular()
を併用して、カスタム投稿タイプやタグとも組み合わせて表示を制御できます。
<?php
if ( is_singular('custom_post') && has_term( 'event', 'category' ) ) {
// 特定のカスタム投稿タイプとカテゴリーが一致する場合
}
?>
まとめ
特定のカテゴリーにだけバナーを表示することで、読者に的確な情報を提供したり、キャンペーンを効率的に訴求することができます。in_category()
や has_term()
を活用して、柔軟な出し分けを実装してみてください。