サポート » 使い方全般 » if文の書き方について

  • 解決済 rqcmt

    (@rqcmt)


    h1の部分をページごとに変更したいと思い下記のように記述しました。

    一応、思った動作はするのですが、これで問題ないのかもわかりません。
    また、もう少しスマートな書き方はないでしょうか?

    この記述自体自分でいろいろと調べてみたんですが、初心者のわたしには難しいようです。

    どなたかご教授いただけないでしょうか。

    <?php if(is_front_page()): ?>
    <?php the_title();?>
    <?php endif; ?>

    <?php if (is_category()): ?>
    <?php echo category_description(); ?>
    <?php endif; ?>

    <?php if (is_single()): ?>
    <?php the_title();?>
    <?php endif; ?>

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

    (@jim912)

    rqcmtさん、こんにちは。

    is_single と is_front_page で実行することが同じなので、これは if 文の中を

    is_front_page() or is_single()

    と記述して、フロントページまたは個別投稿ページという条件にまとめることが可能です。
    それとPHPが連続してしるのであれば、一文ごとにPHPタグで括らずに全体を括った方が見やすいでしょう。

    <?php
    if(is_front_page() or is_single()):
    	the_title();
    endif;
    
    if (is_category()):
    	echo category_description();
    endif;
    ?>

    2つのif文を elseif でまとめることもできますが、この場合は大した違いはないので、自分の理解のしやすさに応じて記述すればいいかと思います。

    <?php
    if(is_front_page() or is_single()):
    	the_title();
    elseif (is_category()):
    	echo category_description();
    endif;
    ?>
    トピック投稿者 rqcmt

    (@rqcmt)

    jim912さんご丁寧にありがとうございます。
    アドバイスとても参考になりました。

    あらためて、構成しなおしたところ、問題が2つ生じてしまいました。ひとつは読み込んだcategory_descriptionにpタグが挿入されてしまうため、下記のようにfilterを指定してみましたが、間違っているようで削除することができません。

    <?php
    remove_filter (echo category_description', 'wpautop');
    if (is_category()):
    echo category_description();
    endif;
    ?>

    もうひとつは投稿ページはタグを表示させたく、以下のように記述しましたが、動作しません。

    <?php
    if (is_single()):
    $posttags = get_the_tags();
    if ($posttags) {
    foreach($posttags as $tag) {
    echo $tag->name.' ';
    }
    }
    endif;
    ?>

    下記の記述ではうまく動作しますが、何が問題なのでしょうか?

    <?php if (is_single()): ?>
    <?php
    $posttags = get_the_tags();
    if ($posttags) {
    foreach($posttags as $tag) {
    echo $tag->name.' ';
    }
    }
    ?>
    <?php endif; ?>

    また、このような形でh1タグでマークアップしているのですが、実際のソースを見ると<h1>サンプル      </h1>のように余計なスペースが入っています。

    これはどうしようもないのでしょうか?

    いろいろと申し訳ありませんが、よろしくお願いします。

    トピック投稿者 rqcmt

    (@rqcmt)

    自己レスです。下記のような記述でうまく動作しました。スペースについてはh1タグとの間に改行があったようで解決しました。

    <?php
    if(is_front_page()):
    the_title();
    endif;
    if (is_category()):
    echo category_description();
    endif;
    if (is_single() or is_page()):
    $posttags = get_the_tags();
    if ($posttags) {
    foreach($posttags as $tag) {
    echo $tag->name.' ';
    }
    }
    endif;
    ?>

    1点だけ、category_descriptionのpタグの除去には、remove_filter('term_description','wpautop');と書かなければいけなかったようですが、なぜか下のPHPの冒頭に加えると動作しません。結局、functions.phpに加えることで動作しました。

    トピック投稿者 rqcmt

    (@rqcmt)

    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「if文の書き方について」には新たに返信することはできません。