wordpressのカスタムフィールドの内容を、記事画面に反映させようとしています。
カスタムフィールドに何も入力されていない場合、if (get_field(hoge)) を使って表示/非表示の設定を試しているのですが、何も入力されていない場合、PHPにエラーが出てしまいます。
image-setがカスタムフィールドのグループ名で
その中にimage-pcとimage-spの2つのカスタムフィールド(画像)があります。
if (get_field('image-set')で、2つの内どちらかに画像がアップされている場合は、<div class="image-box">以下を表示させ、どちらにもアップされていない場合は何も表示させないという記述にしています。
画像がアップされているときは正常に表示されるのですが、画像がアップされていない場合、
<div class="img-pc"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> と <div class="img-sp"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> の行に Trying to access array offset on value of type bool というエラーが出てしまいます。同じ記述で、カスタムフィールドがテキストの場合は何も入力されていない場合にエラーは起きません。
解決策が分かる方がいらっしゃいましたら、ご教授ください。
PHP
1...(略)... 2<?php 3 if (have_rows('image-set')): 4 while (have_rows('image-set')): the_row(); 5 if(get_field('image-set')): 6?> 7 <div class="img-box"> 8 <?php 9 $image_id = get_sub_field('image-pc'); 10 $_image = wp_get_attachment_image_src($image_id, "none"); 11 ?> 12 <div class="img-pc"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> 13 <?php 14 $image_id = get_sub_field('image-sp'); 15 $_image = wp_get_attachment_image_src($image_id, "none"); 16 ?> 17 <div class="img-sp"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> 18 </div> 19<?php endif; 20 endwhile; 21 endif; 22?>
if (get_field('image-set')で、2つの内どちらかに画像がアップされている場合は、としていたのですが、これをimage-setというグループ名ではなく、if (get_sub_field('image-pc'))というカスタムフィールド名に変更したら、うまく反映されました。グループ名を指定して、その中が空欄だったらという条件分岐はできないのでしょうか?
PHP
1...(略)... 2<?php 3 if (have_rows('image-set')): 4 while (have_rows('image-set')): the_row(); 5 if(get_sub_field('image-pc')): // ←変更点 6?> 7 <div class="img-box"> 8 <?php 9 $image_id = get_sub_field('image-pc'); 10 $_image = wp_get_attachment_image_src($image_id, "none"); 11 ?> 12 <div class="img-pc"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> 13 <?php 14 $image_id = get_sub_field('image-sp'); 15 $_image = wp_get_attachment_image_src($image_id, "none"); 16 ?> 17 <div class="img-sp"><?php echo '<img src="'.$_image[0].'" width="100%" />'; ?></div> 18 </div> 19<?php endif; 20 endwhile; 21 endif; 22?>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/18 04:46
2021/02/18 05:59
2021/02/18 06:01