まず大きく分けて3つ修正すべきところがあります。
- ループ文の使い方
- カスタムフィールドの取得方法
- テンプレートタグの使い方
以下に詳細をまとめます。
#####1.ループ文の使い方
この記述だと正しくループが回らないのではありませんか?
for ($i = 1; $i < 10; $i++){
$attachment_id.$i = get_field('bu_images'.$i.'');
/*この時点で 「変数$i」 に 「get_field()の戻り値が代入」されてしまい変数$iの値が狂います。
あと、get_field()の引数の末尾にある「.''」は何でしょう?多分不要な記述かと*/
ループ(for)文内部の変数にいちいち連番を振る必要はありません。
$attachment_id.$i は $attachment_id
$size.$i は $size
$image.$i は $image
//以下省略
で問題なく動きます。
#####2.カスタムフィールドの取得方法
カスタムフィールドはどのようにして作成されていますか?
- 「Advanced Custom Fields Pluginの取得用関数」
- 「通常のカスタムフィールドの取得用関数」
が混在していますが、それぞれの取得方法は違っています。どのようにして作成されていますか?
(混在させるのは正しい用法とは言えません)
・get_field()
…「Advanced Custom Fields Plugin」専用の関数です。
「Advanced Custom Fields」プラグインを使用してカスタムフィールドを作成されていますか?
使用していないなら、無効な関数です。
逆に、使用されているのであれば、こちらを使用するだけですべて事足ります。
※画像フィールドならば、「画像オブジェクト」にしておけば、そこにフィールドの画像に関するデータはすべて入っています。(取得はその一回で済み、以後の回りくどい処理をすべて省いて出力できます)
ACF Imgae
https://www.advancedcustomfields.com/resources/image/
#####3.テンプレートタグの使い方
使用する前に、ご存知ないテンプレートタグなのであれば、
Codexで「テンプレートタグ」の意味と使い方を調べてから使用することをおすすめします。
例えば、get_post()
の引数にget_field('image')
を渡していますが、使い方を間違っているかと。
(それともimageという別のフィールドを作成されていて、そこに何らかの別の値を収めている?)
get_post()
を使うなら渡すべき引数は「投稿ID」です。画像のIDを渡してしまうと、全然別の記事の情報を取得します。
関数リファレンス/get post
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post
※Advanced Custom Fieldsを使用しているのであれば
$attachment_id = get_field('bu_images'.$i)
で取得した後の処理全部を先述の「ACF Imgae」のリンク先にある書き方へ変更すれば取得〜出力まで行えます。
また、テンプレートタグで取得したデータに何が入っているかを
逐一var_dump()
で一回出力してみることもおすすめいたします。
そうすることで、
どの段階までデータを取得できているのか?あるいは、それが欲しかったデータなのかが分かる
欲していた結果通りだったか、そうでなければ、どのような方法を使うべきかを考える判断材料になる
返ってきた結果から、どのようなデータ形状になっているか分かるため、出力を適切に選べる
なども分かるようになっていくと思います。