MENU

投稿ページのレイアウトをカテゴリ別に分ける(親・子カテゴリ対応版)

swellで投稿ページをそれぞれの投稿のカテゴリでレイアウト分けした場合、single.phpで条件分岐させる。

<?php
if ( ! defined( 'ABSPATH' ) ) exit;

// ▼ 親カテゴリのスラッグを取得
$categories = get_the_category();
$parent_slug = 'default'; // デフォルト値

if (!empty($categories)) {
    foreach ($categories as $cat) {
        if ($cat->parent == 0) {
            // 親カテゴリ
            $parent_slug = $cat->slug;
            break;
        } else {
            // 子カテゴリ → 親カテゴリを取得
            $parent = get_category($cat->parent);
            if ($parent) {
                $parent_slug = $parent->slug;
                break;
            }
        }
    }
}

// ▼ 親カテゴリスラッグに応じてテンプレートファイルを切り替え
$template_file = locate_template("single-{$parent_slug}.php");

if ($template_file) {
    include($template_file); // 親カテゴリ用テンプレート
} else {
    include(locate_template("single-default.php")); // フォールバックテンプレート
}

カテゴリ「works」があって、このカテゴリのデザインを他の投稿ページと分けたい場合、single.phpにはこの条件分岐のみを起き、single.phpをベースにして作成したsingle-works.phpを置いて、そこでデザイン変更を行うようなイメージ。

目次