フォーラム

[解決済み] テンプレートの指定方法 (3 件の投稿)

  1. mmedo78
    メンバー
    1 年前の投稿 #

    ●WordPressバージョン2.5.1

    テンプレートの指定方法で悩んでいます。

    例えば・・・Aの親カテゴリとAに属する子カテゴリB、Cがあるとして、「親A」に属する「子B、C」は「親A」と共通のテンプレート。
    もし、親カテゴリ「E」を新規追加し「子C」を「親E」に属する子カテゴリとした場合、「子C」は「親E」のテンプレートに自動的に切り替わる。

    このように、属する親カテゴリーのテンプレートが、子カテゴリーにも反映されるようにしたいのです。もし、方法があれば教えてください。
    宜しくお願いいたします。

    ▼以下の方法以外でお願いいたします

    • 子カテゴリの記事投稿の際、「カテゴリ」選択で親カテゴリにもチェックしてテンプレートを反映させる
    • テンプレートタグ<?php if(in_category('ID')): ?>でカテゴリIDを指定する
      (このタグだとカテゴリ追加毎に、IDを指定しないといけないので・・・)
  2. mizube
    メンバー
    1 年前の投稿 #

    <?php
    function in_category_family( $parent ) {
        if ( empty($parent) )
            return false;
    
        if ( in_category($parent) )
            return true;
    
        $parent = get_category($parent);
        foreach ( (get_the_category()) as $child ) {
            $child = get_category($child->cat_ID);
            if ( cat_is_ancestor_of($parent, $child) )
                return true;
        }
    
        return false;
    }
    ?>

    というような関数を作ってみるといいのではないかと思います。

    <?php
    if ( function_exists('in_category_family') && in_category_family(1) )
        echo "この投稿は、カテゴリー 1 か、その子カテゴリのいずれかに属しています。";
    ?>

    この例ですと、テンプレートにおける場合分けの際、
    親カテゴリーのIDだけはどうしても指定する必要がありますので、
    期待されている方法ではないかもしれませんが。

  3. mmedo78
    メンバー
    1 年前の投稿 #

    mizube様、ご返信ありがとうござます。

    さっそく教えていただいた関数をfunctions.phpへ追加し、
    「in_category_family」を、テンプレート呼び出しで使用したらバッチリです!

    子カテゴリーが、親カテゴリーのテンプレートに自動で反映される方法を探していたので、
    これぞ、私が望んでいた方法です!

    本当にありがとうございました。

返信

ログイン しなければ投稿できません。

About this Topic