サポート » 使い方全般 » ORとNOTの複雑な条件分岐の記述について

  • 解決済 amachang

    (@amachang)


    アーカイブページ OR シングルページ OR 検索ページ
    の場合のみコンテンツを表示させる場合の条件分岐としては、
    if(is_archive() || is_single() || is_search())
    で問題ありませんでした。

    この条件分岐から、discographyというカスタム投稿タイプのシングルページを除外したいのです。
    if(is_archive() || is_single() || is_search() || !is_singular('discography'))

    としてみましたがうまく除外されません。

    どのように記述すればよいかご教示頂けないでしょうか?

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんばんは。
    このような少し種類の違う判定の場合は、無理に一つの判定内で収めようとしないほうが
    あとで修正などする際にもわかりやすくなります。

    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()) {
    }

    このようにすれば行けるんじゃないかと思います。

    トピック投稿者 amachang

    (@amachang)

    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;のほうがいいかと思います。

    トピック投稿者 amachang

    (@amachang)

    ありがとうございます!
    ご指示頂いたいずれの記述でも、
    Fatal error: Call to undefined function is_signle() in~sidebar.php on line 14
    と表示されてしまいます。。

    トピック投稿者 amachang

    (@amachang)

    申し訳ありません。自己解決しましたm(__)m
    singleがsignleになっていたという凡ミスです。。

    <?php if(is_archive() || (is_single() && !is_singular('discography')) || is_search()): ?>
    コンテンツ
    <?php endif; ?>

    で望み通りの条件分岐ができました!
    jdbbさん、ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「ORとNOTの複雑な条件分岐の記述について」には新たに返信することはできません。