TAMA-wp
メンバー
3 years前の投稿 #
いつもお世話になります。
シングルページで、特定のタグが付けられた記事が表示されている場合のみ、サイドバーの内容を一部変更したいです。サイドバー全体を変更するのではなく、一部分のみ追加する感じです。
シングルページの場合に、一部分を追加するだけなら
<?php if(is_single()){?>
//サイドバーに追加したい内容を記述
<?php } ?>
このようにすれば良いとわかりましたが、記事のタグをどうやって指定すればよいのかわかりません。
term_idを取得して、それを指定すればできるのではないかなとは思いましたが、サイドバーで記事のterm_idを取得するにはどうしたら良いのやら・・・???
よろしかったらアドバイスをお願い致します。
mizube
メンバー
3 years前の投稿 #
Codex はご覧になりましたか? is_tag() という条件分岐タグがあります。
<?php if ( is_tag( 'slug' ) : ?>
<!-- 追加内容 -->
<?php endif; ?>
あるいは
<?php if ( is_tag( utf8_uri_encode( 'タグ' ) ) ) : ?>
<!-- 追加内容 -->
<?php endif; ?>
のようにすれば OK です。
英数字 + ハイフンのタグや、タグのスラッグを編集している場合は前者、タグが日本語で、特にスラッグを編集していない場合は後者です。
TAMA-wp
メンバー
3 years前の投稿 #
mizube様
ご回答ありがとうございました。特に後者の方法は勉強になりました。
質問文がわかりにくくて申し訳なかったのですが、私は、タグアーカイブのページではなく、個別記事が表示されている際に、サイドバーの表示を変えたいと思っています。
is_tag()でタグアーカイブページの条件分岐は問題なくできました。
ただ個別記事に移動すると、設定したはずの内容が表示されませんでした。
ループ内ならget_the_tags()を使えば、term_idなどを取得できるような気がするのですが、サイドバーではどうしたらよいのか・・・???
もしよろしかったらアドバイスお願い致します。
mizube
メンバー
3 years前の投稿 #
> TAMA-wp さん
こちらこそ質問の内容を誤解していました。ごめんなさい。
方法としてはjim912 さんのやり方で出来ます (> フォローありがとうございました!)。
補足ですが、 has_tag() というテンプレートタグもあります (WP2.6.0 以降?)。
この条件分岐タグはWordPress ループ内専用ですが、タグ名とスラッグの両方にアプローチします。
has_tag() の判定結果を利用する場合、もしループ後にサイドバーを読み込んでいるなら、ループ内で
<?php if ( has_tag('タグ') ) $has_tag = true; ?>
としておき、サイドバーの方で
<?php if ( $has_tag ) : ?>
<!-- 追加内容 -->
<?php endif; ?>
とすればよさそうです。
TAMA-wp
メンバー
3 years前の投稿 #
>jim912 様
ご回答ありがとうございます。
ご指示頂いたコードでサイドバーの内容が変更できました。
term_idでも問題なく動きました!
Codexに書かれていなくてもいろいろやり方があるんですね。
とても勉強になりました。
>mizube 様
度々のご回答ありがとうございます。
jim912様のコードで解決致しました。
has_tag()というタグもあるのですね!初めて見ました。
このタグを使っても面白そうだなと思いました。