サポート » 使い方全般 » このfunctionを特定のカテゴリで利用する

  • 解決済 takadai

    (@takadai)


    子カテゴリーを見るとき、それの親カテゴリーと同じテンプレートを使いたいです。

    まず、こちらの投稿を参考しました。

    テンプレートの指定方法
    http://ja.forums.wordpress.org/topic/401

    この関数を、特定の親カテゴリーの時だけ、利用する方法を教えてください。

    具体的には・・・

    カテゴリー1(スラッグ:cat1 ID:1)
    ┗カテゴリー1の子カテゴリー1
    ┗カテゴリー1の子カテゴリー2

    カテゴリー2(スラッグ:cat2 ID:2)
    ┗カテゴリー2の子カテゴリー1
    ┗カテゴリー2の子カテゴリー2

    というカテゴリー分けをして、

    『category.php』
    <!– cat1 –>
    <?php if( is_category(‘cat1’) ): ?>
    <?php include ( TEMPLATEPATH. ‘/cat1.php’); ?>
    <?php endif; ?>

    <!– cat2 –>
    <?php if ( function_exists(‘in_category_family’) && in_category_family(2) );?>
    <?php include ( TEMPLATEPATH. ‘/cat2.php’ ); ?>

    という内容にしています。
    しかし、これではカテゴリー2のページについては理想通り表示されているのですが、カテゴリー1のページを見たときに、<!– cat2 –>以下が表示されてしまいます。

    かといって、

    <!– cat2 –>
    <?php if( is_category(‘cat2’) ): ?>
    <?php if ( function_exists(‘in_category_family’) && in_category_family(2) );?>
    <?php include ( TEMPLATEPATH. ‘/cat2.php’ ); ?>
    <?php endif; ?>

    としてしまっても、カテゴリー2の子カテゴリーは<?php if( is_category(‘cat2’) ): ?>に当てはまらないので、関数を利用できません。

    どうすれば上手くできますか?
    よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは。

    <?php if ( function_exists('in_category_family') && in_category_family(2) );?>
    <?php include ( TEMPLATEPATH. '/cat2.php' ); ?>

    このコードがそもそも間違っていますよ。正しくは

    <?php if ( function_exists('in_category_family') && in_category_family(2) ) : ?>
    <?php include ( TEMPLATEPATH. '/cat2.php' ); ?>
    <?php endif; ?>

    のはずです。

    つまり in_category_family(2) の if 文が無効なので、 cat1 でも cat2 でも関係なく、常に include ( TEMPLATEPATH . '/cat2.php' ); されてしまっているという状況です。

    cat2 では正しく動作しているように見えるのは、 cat1.php が is_category(1) の場合にのみ読み込まれるからです。

    トピック投稿者 takadai

    (@takadai)

    mizubeさん、返信ありがとうございます。

    正しいコードを挿入したら、希望通り動かす事ができました。
    コードミスだったんですね;; お恥ずかしい・・・。
    ご指摘ありがとうございました!

    参考にさせて頂いた投稿も、本当に助かっています。
    感謝の言葉が見つかりません。本当にありがとうございました。

    上手くいったようで良かったです。良いお年を。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「このfunctionを特定のカテゴリで利用する」には新たに返信することはできません。