Help us understand the problem. What is going on with this article?

WP_Queryでカスタムフィールド の画像URLが取得できなくてつまづいた

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を設定する必要があったから...。

yashi845
社会人5年目の文系卒パッション系Webプログラマ。 技術力は高くないけど初心者がつまづきそうなポイントを記事にしたい(と思っている)。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした