サポート » 使い方全般 » PHPの「endif;」の使い方が理解できません。

  • 初歩的な質問で申し訳ございませんが、以下の文で理解できない部分があります。教えてください。

    <?php 
    if (get_previous_post()):
    ?>
    
    	<?php previous_post_link('%link', '&raquo %title'); ?>
    <?php
    endif;   ①←ここは「?>」で閉じなくていいのですか?
    
    if (get_next_post()):
    ?>    ②←ここに終了タグがありますが、これは3行上の「<?php」に対する終了タグですか?
    	<?php next_post_link('%link', '&laquo %title'); ?>
    <?php
    endif;
    ?>    ③←なぜ、こちらの「endif;」には「?>」が必要なのでしょうか?

     

    どの開始タグがどの終了タグと対になっているのか、理解できません。
    この文で、実際にちゃんと動くのですが・・・。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • >①←ここは「?>」で閉じなくていいのですか?

    閉じてもOKです。その場合は その後 if でPHPがはじまってますので

    <?php if (get_next_post()):

    としなければなりません。

    ②←ここに終了タグがありますが、これは3行上の「<?php」に対する終了タグですか?

    この場合はそうなります。

    ③←なぜ、こちらの「endif;」には「?>」が必要なのでしょうか?

    後にPHPが続くのであれば閉じなくても良いのですが、いずれは閉じなければなりません。

    そもそもPHPファイルは <?php ?> の内側はPHP、外側はHTML(或いはただのテキスト)となるわけで、それがわかっていないので混乱してらっしゃるのかな、と思います。
    例示されたコードのみだとPHPの外側で出力している箇所はないので、以下のように書くことも可能になります。

    <?php
    if (get_previous_post()):
    	previous_post_link('%link', '&raquo %title');
    endif;
    
    if (get_next_post()):
    	next_post_link('%link', '&laquo %title');
    endif;
    ?>

    トピック投稿者 yama1126

    (@yama1126)

    taku_kさん、ありがとうございます!
    なるほどです。
    ①の部分を閉じるなら、

    <?php if (get_next_post()):で始める

    というご説明でやっと意味がわかりました。
    大変助かりました!

    トピック投稿者 yama1126

    (@yama1126)

    Ayustarさんありがとうございます。
    こちらも大変参考になりました。

    つまり、PHPのコードの中にHTMLのコードがないのであれば、開始タグ「<?php 」
    と終了タグ「?>」で囲めば、PHPは動いてくれるということですね!

    でも、ちょっと疑問です・・・。
    Ayustarさんが書き直していただいた分はif文なので、1対の<?phpと?>で囲めばちゃんと動くということは理解できたのですが、このif文の後に別の文を入れた場合・・・こんな感じで↓

    <?php
    if (get_previous_post()):
    	previous_post_link('%link', '&raquo %title');
    endif;
    
    if (get_next_post()):
    	next_post_link('%link', '&laquo %title');
    endif;
    
    bloginfo('name');
    ?>

    これでも動くのでしょうか?

    自分で試してみろって感じですね・・・(苦笑)
    すみません、試してみます。

    ありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「PHPの「endif;」の使い方が理解できません。」には新たに返信することはできません。