サポート » 使い方全般 » 複数条件分岐の方法

  • beeesty

    (@beeesty)


    PHP初心者です。
    現在下記の方法で親と子ページの条件分岐を行っております。

    <?php if ( is_page( 'page1' ) || '1' == $post->post_parent ) { ?>
    
    <?php }else{ ?>
    
    <?php } ?>

    ここに、もう1つ固定ページの時の条件分岐を追加するとき、
    どのような構文にすればよろしいでしょうか。
    ご教授くださいませ><

    <?php }else{ ?>
    の前にeiseifをつけるのだと思いますが、書き方がわからずエラーになってしまいます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    eiseif の記法であれば、PHPマニュアルの elseif を参照してください。

    もう1つ固定ページの時の条件分岐を追加

    というのが、最初のif の条件式に対してなのか、それが成り立たなかった場合なのか、両方の意味にとれます。後者であれば、elseif ですが、前者であれば、最初のif の条件式自体の修正となります。

    トピック投稿者 beeesty

    (@beeesty)

    jim912さん、回答いただきありがとうございます!
    すみません、私が間違ってややこしくしてしまっていました・・

    ?php }else{ ?>
    の前にeiseifをつけるのだと思いますが

    これがそもそも違っておりまして

    <?php if ( is_page( 'page1' ) || '1' == $post->post_parent ) { ?>

    ↑この式に固定ページ(仮にpage2というスラッグ)を追加したいという意味です!

    モデレーター jim912

    (@jim912)

    <?php if ( is_page( 'page1' ) || '1' == $post->post_parent ) { ?>

    ↑この式に固定ページ(仮にpage2というスラッグ)を追加したいという意味です!

    この場合は、どのように追加したいのかも合わせて書いてもらえると助かります。

    <?php if ( is_page( 'page1' ) || '1' == $post->post_parent ) { ?>

    の条件は、「スラッグがpage1の固定ページ、または親のIDが1」となります。

    これに、スラッグがpage2の固定ページを追加する場合、「スラッグがpage1かつスラッグがpage2」の固定ページというのは、あり得ませんので

    「スラッグがpage1の固定ページ、またはスラッグがpage2の固定ページ、または親のIDが1」

    もしくは、

    「スラッグがpage1の固定ページ、または親のIDが1で、かつスラッグがpage2の固定ページ」

    のいずれかになるはずです。

    前者の条件の場合、is_pageには、配列形式で複数の指定が可能となりますので、

    <?php if ( is_page( array( 'page1', 'page2' ) ) || '1' == $post->post_parent ) { ?>

    となります。後者の場合は、

    '1' == $post->post_parent

    is_page( 'page2' )

    を && で繋げれば、両方の条件を満たす「かつ」になりますが、

    <?php if ( is_page( 'page1' ) || '1' == $post->post_parent && is_page( 'page2' ) ) { ?>

    この記述ですと、|| と && のどちらが優先的に評価されるか一見してわかりません。
    ※ 結果的には、演算子の優先順位により、&& が優先的に評価されます。

    このような場合には、結果としては同じでも && の方が優先的に評価されるように条件式を()で括るとのちのちメンテナンスしやすくなります。(この点は数式と同じ考え方になります)

    <?php if ( is_page( 'page1' ) || ( '1' == $post->post_parent && is_page( 'page2' ) ) ) { ?>

    トピック投稿者 beeesty

    (@beeesty)

    jim912さん、
    ありがとうございます!

    <?php if ( is_page( array( 'page1', 'page2' ) ) || '1' == $post->post_parent ) { ?>

    上記コードで思い通りの表示ができました!
    詳しくご説明していただき、ありがとうございました!!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「複数条件分岐の方法」には新たに返信することはできません。