Advanced Custom Fieldsでギャラリーを使用したときの出力方法を備忘録で残しておこうと思います。
画像をループさせる方法とやり方が全然違うので、覚えておくといいかもしれませんね。
ラベル名を「acf_library_ss」としてます。
まずはがっつりソースから。
<?php $gallery = get_field('acf_library_ss'); if( $gallery ): ?> <ul class="slickImg"> <?php foreach( $gallery as $gallerys ): ?> <li><img src="<?php echo $gallerys['url'] ;?>" alt="<?php echo $gallerys['caption'] ;?>"></li> <?php endforeach; ?> </ul> <?php endif; ?>
1つずつ解説していきますね。
「acf_library_ss」をgalleryという変数に入れます。
ここは好きな変数で構いません。imageとかthumnailでもOKです!
ifで区切らないと、「Invalid argument supplied for foreach() in 」という
foreachに使えない変数を使っているよーというエラーが吐き出されます。
他の部分にも影響してしまうんですね。
なのでifで場合分けしておきましょう。
<?php $gallery = get_field('acf_library_ss'); if( $gallery ): ?>
あとは基本的にはforeachの通常の書き方に従います。
foreach は、配列を反復処理するための便利な方法で、配列とオブジェクトだけを使用できます。
別のデータ型や初期化前の変数に対してforeach 使用すると、上記のようなエラーが生じます。
「foreach( $gallery as $gallerys )」は
$galleryで指定したオブジェクトに対してループ処理を行う際に、ハンプる処理を「 $gallerys 」に格納するよーという意味です。
反復処理に対して、必要な情報を取得するので、liの中には
$gallerys[‘url’] …$gallerysのURL
$gallerys[‘caption’] …$gallerysのcaption
という指定の仕方をしてあげます。
<?php foreach( $gallery as $gallerys ): ?> <li><img src="<?php echo $gallerys['url'] ;?>" alt="<?php echo $gallerys['caption'] ;?>"></li> <?php endforeach; ?>
かならずforeachをまわしたあとは「」でしめましょう!
これで完了です。
お疲れ様でした!
大変参考になりました。助かりました!
ありがとうございます。
一応
コードの冒頭
$gallery =
のところなど
普通にコピペすると前の文字に全角スペースが入ります。
熟練の方々は経験済みかと思いますが、初心者(私のような)は
戸惑ってしまうと思います。
誤字脱字のひどい記事で失礼しました💦
コメントいただきありがとうございます。励みになります!
確かにそうですね。
見やすさ重視で余白を入れてしまうのですが
コピペすると確かに余計な余白が入ってしまいますね。
改善してみようと思います!ご指摘ありがとうございます!(^^)