サポート » 使い方全般 » カスタムフィールド値の条件分岐の書き方

  • 解決済 mae-tel

    (@mae-tel)


    お世話になります。
    Advanced Custom Fields とそのアドオン Repeater Fieldを使用しています。

    サブフィールド2(テキスト)は必須ですが、サブフィールド1(画像)は、あったりなかったりしますので、未熟ですが条件分岐を書いてみたのですが、表示すらされません。
    このコードのどのあたりが問題なのでしょうか?

    <div class="○○">
    <?php if(get_field('繰り返しフィールド名')): ?>
      <ul class="○○">
        <?php while( the_repeater_field('繰り返しフィールド名') ): ?>
            <?php
            $image = get_sub_field('繰り返しサブフィールド名1');
            $text = get_sub_field('繰り返しサブフィールド名2');
            ?>
            <?php if (empty($image)) : ?>     //サブフィールド1に何もなかった場合
               <li><?php echo $text; ?></li>
            <?php endif; ?>
            <?php if (($image)) : ?>          //サブフィールド1、2ともに値がある場合
            <?php if (($text)) : ?>
               <li><img src="<?php echo $image; ?>" width="200px;" alt="" /><?php echo $text; ?></li>
            <?php endif; ?>
            <?php endif; ?>
        <?php endwhile; ?>
      </ul>
    <?php endif; ?>
    </div>

    ①サブフィールド1に画像がなかった場合、2のテキストのみ表示
    ②サブフィールド1、2ともにあった場合、両方表示
    このパターンしかないので、上記のようにしてみたのですが
    問題があるようです。

    ご教授お願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • <?php if (empty($image)) : ?>     //サブフィールド1に何もなかった場合
    	<li><?php echo $text; ?></li>
    <?php endif; ?>
    <?php if (($image)) : ?>          //サブフィールド1,2ともに値がある場合
    <?php if (($text)) : ?>
    	<li><img src="<?php echo $image; ?>" width="200px;" alt="" /><?php echo $text; ?></li>
    <?php endif; ?>
    <?php endif; ?>

    上記のとおりwhileループの中にifが3回出てきますが、次のように変えてみてはどうでしょうか?(実際に試してはおりませんが)

    <li>
    <?php if (!empty($image)) : ?>
    <img src="<?php echo $image; ?>" width="200px" alt=“" />
    <?php endif; ?>
    <?php echo esc_html($text); ?>
    </li>

    それから(念のため)$imageの内容は画像ファイルのURLで間違いないですよね。(相対パス、またはhttp://から始まる絶対パス。)

    トピック投稿者 mae-tel

    (@mae-tel)

    ghvst様、ご回答ありがとうございます。

    ご教授いただいたコードで、きちんと表示され、理想の形となりました!
    私の中で煮詰まっていたので、大変助かりました。
    条件分岐の書き方をもっと勉強します・・・汗

    ghvst様、ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールド値の条件分岐の書き方」には新たに返信することはできません。