【WordPress】個別投稿ページで特定カテゴリーのみ要素を表示・非表示にする方法

【WordPress】個別投稿ページで特定カテゴリーのみ要素を表示・非表示にする方法 WordPress

WordPressサイトを運営していると、あるカテゴリーの記事だけ表示内容やレイアウトを変えたいというケースが出てきます。この記事では、個別投稿ページ(single.php)で特定のカテゴリーに応じて要素を表示・非表示にするための実装方法を3つのアプローチで紹介します。

1. PHPでカテゴリーを条件分岐して表示を切り替える

single.php内でin_category()関数を使い、特定カテゴリーの記事にだけ異なる処理を行うことが可能です。以下は、特定カテゴリーに属する投稿の場合だけ本文の代わりにメッセージを表示する例です。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

  <?php if ( in_category( 'news' ) ) : ?>
    <p>この内容は非表示になっています。</p>
  <?php else : ?>
    <div class="entry-content">
      <?php the_content(); ?>
    </div>
  <?php endif; ?>

<?php endwhile; endif; ?>

in_category()にはカテゴリースラッグ、ID、または配列を渡すことができます。複数カテゴリに対応したい場合は、in_category( array( 'news', 'column' ) )のように記述します。

2. 子テーマでカテゴリー専用テンプレートを作成する

カテゴリーごとに異なるテンプレートでデザインを完全に分けたい場合は、子テーマに専用テンプレートファイルを作成するのが最も柔軟です。

たとえば、newsというスラッグのカテゴリー用に以下のようなファイルを作成します:

single-news.php

このファイルを子テーマのルートに配置すれば、newsカテゴリーの投稿だけがこのテンプレートを使用して表示されます。カテゴリーごとのデザイン変更や表示制御に最適な方法です。

3. CSSで特定カテゴリーにだけスタイルを適用する

WordPressでは、<body>タグに自動でカテゴリースラッグ付きのクラスが付与されます。これを活用して、CSSで特定のカテゴリーの投稿だけにスタイルを変更することができます。

body.category-news .target-element {
  display: none;
}

ここでは、newsカテゴリーに属する投稿で、.target-elementというクラスを持つ要素を非表示にしています。PHPを触らずに実装できるため、デザイン面の制御に便利です。

まとめ

特定のカテゴリーの記事だけ表示内容を変えたい場合、WordPressでは以下の3つの方法が使えます。

  • PHPによるカテゴリー判定で要素の表示を制御
  • 子テーマにカテゴリー専用テンプレートを用意
  • CSSで特定カテゴリーのみスタイルを変更

要件や目的に応じてこれらの手法を使い分けることで、より柔軟で管理しやすいカスタマイズが可能になります。複数の方法を組み合わせて、最適な構成を目指しましょう。