こんばんは。
このような少し種類の違う判定の場合は、無理に一つの判定内で収めようとしないほうが
あとで修正などする際にもわかりやすくなります。
if(is_archive() || is_single() || is_search()) {
if ( ! is_singular('discography'))) {
}
}
else等の都合によりどうしてもひとつにまとめたい場合は
シングルページの判定内を
(is_signle() && !is_singular('discography') )
として
if(is_archive() || (is_signle() && ! is_singular('discography') ) || is_search()) {
}
このようにすれば行けるんじゃないかと思います。
jdbbさん、さっそくありがとうございます!
申し訳ありません、phpがよく分かっていないのですが、後者の記述をもとに以下のようにしてみましたがFatal errorになってしまいました。{}の使い方がよく分かっていません。
<?php if(is_archive() || (is_signle() && !is_singular('discography')) || is_search()): ?>
コンテンツ
<?php endif; ?>
できれば前者と後者のどちらでも書けるようになりたいのですが、コードをご教示頂けないでしょうか?
どのようなエラーが出ましたか?
!is_singular(‘discography’)
を
! is_singular(‘discography’)
としてみたり
!(is_singular(‘discography’))
としてみると動くかもしれません。
{}はphpだけを書くときには便利ですがテンプレートなどに使用すると
見づらくなるのでanachang様の書いたとおりif(): endif;のほうがいいかと思います。
ありがとうございます!
ご指示頂いたいずれの記述でも、
Fatal error: Call to undefined function is_signle() in~sidebar.php on line 14
と表示されてしまいます。。
申し訳ありません。自己解決しましたm(__)m
singleがsignleになっていたという凡ミスです。。
<?php if(is_archive() || (is_single() && !is_singular('discography')) || is_search()): ?>
コンテンツ
<?php endif; ?>
で望み通りの条件分岐ができました!
jdbbさん、ありがとうございました。