かわろぐ

ITビジネス、ガジェット、メディア、経済、子育て、遊び、飯とかなんでも配信していくよ。WordPress関連の記事はメモ感覚で書いてるので、乱文で失礼仕り候。ガジェ通とかにも記事提供してるので、よろしくね!

Advanced Custom Fieldsで登録した画像のフィールド名をget_post_metaで呼び出すとIDが返ってくる話

LINEで送る
Pocket

これは大きな発見なんだよ(個人的に)

WordPressでAdvanced Custom Fieldsとか使う人はそもそもバカでかいサイズの画像をUpしたりしないと思うんですよね。
だから別にいつもはフルサイズでいいし、基本的に返り値はURLにしてたりしませんか?

でも、たまーーーに「あ、サムネイルを表示させたいな」ってときもあったりする。
それで「え~っと、サムネイルの取得方法は。。。」と調べてみると、やれ「返り値をIDにしろ」とかそんな事ばっかり書いてやがる。

いやいや、そんな、今さら返り値をIDにしたら大変なことが起こるやん?って思うんですよね。
Advanced Custom Fieldsあるあるの一つですね。
なんかいい方法ないかなと思ってたら、たまたま気づいた事があったんだ。

実はget_post_metaで返ってくるのはIDだった

ショートコードで簡単にカスタムフィールドを取ってこれるような、自作のプラグインでも作っちゃおうかな~と思ってシコシコ作ってたわけですよ。フィールド名を指定して取ってきてくれるとさらにいいなと。

それで、こんなことを考えたわけ
[scode post_id="20" fields="○○,××,△△"]
こんな感じで、フィールド名をカンマ区切りで書いてやるとValueを引っ張ってきてくれるって寸法。

ただ、標準のカスタムフィールドで登録した場合、AFC独自のコードであるthe_field()とかget_fieldは使えないわけ。
つーことで、AFCで登録したフィールドも、標準機能で登録したフィールドもとりあえず、get_post_metaでカスタムフィールドの値を取ってみたんです。

とりあえず、Advanced Custom Fieldsで登録した画像のフィールド名は「img」だとすると以下の様なコード。

echo get_post_meta(get_the_ID(),"img",true);

なんとうい事でしょう。。。

 

AFCで登録した画像のフィールド名をget_post_metaで呼び出すと、IDが返ってくるではありませんか。。。
大事なことなのでもう一度言います。

AFCで登録した
画像のフィールド名を
get_post_metaで呼び出すと
IDが返ってくるよ!

知らなかったぞーーーー!

AFCで登録した時にDBにどうやって登録されてるか見たこと無かったので。。。
てっきり今までAFCで画像の返り値をURLにしたら、値にはURLが入ってるものだろうと思い込んでました。

でも実際、get_post_metaで返り値を見てみると、アタッチメントのIDが返ってくるわけですよ。

これは大きな発見です!というこで。。。

$img_id = get_post_meta(get_the_ID(),"img",true);
$img_src = wp_get_attachment_image_src($img_id,'full');

と、こんな感じで使うわけです。おかげですげぇ手間が省けました。。。
というか、あちこちに書いてる「AFCの画像の返り値はIDがいいよ」ってのは使い方としては微妙な気がするよ!

いちいちアタッチメントIDからURLをひっぱってくるのもめんどいしね。やっぱり画像の返り値はURLにしておくのがいいと思うよ!

get_field("フィールド名") → URLが返ってくる
get_post_meta($post->ID,"フィールド名",true); → IDが返ってくる

こんな感じで、get_post_metaでIDは簡単に返せるんだもの。

LINEで送る
Pocket

-WordPress
-, , , ,