サポート » 使い方全般 » 特定のタグが付けられた記事の場合のみサイドバーの内容を追加したい

  • 解決済 TAMA-wp

    (@tama-wp)


    いつもお世話になります。

    シングルページで、特定のタグが付けられた記事が表示されている場合のみ、サイドバーの内容を一部変更したいです。サイドバー全体を変更するのではなく、一部分のみ追加する感じです。

    シングルページの場合に、一部分を追加するだけなら

    <?php if(is_single()){?>
    //サイドバーに追加したい内容を記述
    <?php } ?>

    このようにすれば良いとわかりましたが、記事のタグをどうやって指定すればよいのかわかりません。

    term_idを取得して、それを指定すればできるのではないかなとは思いましたが、サイドバーで記事のterm_idを取得するにはどうしたら良いのやら・・・???

    よろしかったらアドバイスをお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • Codex はご覧になりましたか? is_tag() という条件分岐タグがあります。

    <?php if ( is_tag( 'slug' ) : ?>
    <!-- 追加内容 -->
    <?php endif; ?>

    あるいは

    <?php if ( is_tag( utf8_uri_encode( 'タグ' ) ) ) : ?>
    <!-- 追加内容 -->
    <?php endif; ?>

    のようにすれば OK です。
    英数字 + ハイフンのタグや、タグのスラッグを編集している場合は前者、タグが日本語で、特にスラッグを編集していない場合は後者です。

    mizube様

    ご回答ありがとうございました。特に後者の方法は勉強になりました。

    質問文がわかりにくくて申し訳なかったのですが、私は、タグアーカイブのページではなく、個別記事が表示されている際に、サイドバーの表示を変えたいと思っています。

    is_tag()でタグアーカイブページの条件分岐は問題なくできました。
    ただ個別記事に移動すると、設定したはずの内容が表示されませんでした。

    ループ内ならget_the_tags()を使えば、term_idなどを取得できるような気がするのですが、サイドバーではどうしたらよいのか・・・???

    もしよろしかったらアドバイスお願い致します。

    モデレーター jim912

    (@jim912)

    TAMA-wpさん、こんにちは。

    下記のコードでいかがでしょうか。
    Codexでは、get_the_tagsの引数に関する記述がありませんので、推奨されたやり方ではないと思いますが、2.7β2での関数の記述を見る限り、記事idを引数に持たせる想定はしていそうでした。

    <?php if ( is_single() ) {
    $post_tags = get_the_tags( $post->ID );
    foreach( $post_tags as $post_tag ) {
    if ( $post_tag->name == 'タグ名' ) {
    ?>
    サイドバーに追加したい内容を記述
    <?php } } } ?>

    上記のコードでは、タグ名で判別していますが、$post_tag->term_id = ‘タグのid’と変更すれば、term_idなどでの判別も可能だと思います。

    > TAMA-wp さん

    こちらこそ質問の内容を誤解していました。ごめんなさい。
    方法としてはjim912 さんのやり方で出来ます (> フォローありがとうございました!)。

    補足ですが、 has_tag() というテンプレートタグもあります (WP2.6.0 以降?)。
    この条件分岐タグはWordPress ループ内専用ですが、タグ名とスラッグの両方にアプローチします。
    has_tag() の判定結果を利用する場合、もしループ後にサイドバーを読み込んでいるなら、ループ内で

    <?php if ( has_tag('タグ') ) $has_tag = true; ?>

    としておき、サイドバーの方で

    <?php if ( $has_tag ) : ?>
    <!-- 追加内容 -->
    <?php endif; ?>

    とすればよさそうです。

    >jim912 様

    ご回答ありがとうございます。
    ご指示頂いたコードでサイドバーの内容が変更できました。
    term_idでも問題なく動きました!
    Codexに書かれていなくてもいろいろやり方があるんですね。
    とても勉強になりました。

    >mizube 様

    度々のご回答ありがとうございます。
    jim912様のコードで解決致しました。
    has_tag()というタグもあるのですね!初めて見ました。
    このタグを使っても面白そうだなと思いました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「特定のタグが付けられた記事の場合のみサイドバーの内容を追加したい」には新たに返信することはできません。