Wordpress案件中、そもそもの書き方が悪かったのかWP_Queryのループ内で
Advanced Custom Fieldsで作成した画像フィールドの画像URLが取得できなくて苦労した。
こういうときは大体たいしたことなくて解決方法すぐ忘れるからメモしとく。
困ったこと
<?php while ($sample_query->have_posts()) : $sample_query->the_post(); ?>
// なにかしらやる
<?php endwhile; ?>
こういうよくあるループで、カスタムフィールドの値(例えばtext_1)を取得するときは
$text_1 = get_field('text_1');
みたいな書き方で簡単にできるんだけど、画像で
$image_1 = get_field('image_1');
って書くとfalseたらnullだとかで、値が取得できない...。
はー困った。
こういう書き方でなんとかした
get_field()以外の書き方を模索
// 画像IDが返ってくる
$image_id = $sample_query->post->image_1;
// 画像IDを元にファイルURLを取得
$image_1 = wp_get_attachment_url($image_id);
いやー、一件落着。
もっとスマートな書き方あるだろ
$sample_query->post->image_1でIDが返ってくるの知らなかった。勉強になった。2時間くらいかかった。
でも全体的にもっと簡潔な書き方ありそうな気がしてる。
あとは、ACFで画像の返り値に画像IDを設定しておけば
get_field('image_1')で問題なく画像IDを拾ってこれるんだけど
今回はどうしても返り値に画像URLを設定する必要があったから...。