ポケロペンチオという軍団

日々のあれやこれやをなんやかんや

WEB

Advanced Custom Fieldsの繰り返しフィールド内でリサイズされた画像を出力する

Advanced Custom Fieldsリサイズされた画像を出力

アイキャッチ画像であれば、

add_image_size( 'thumbnail-size1', '480', '480', [ "center", "center") );

などとfunctions.phpに記述しておけば

get_the_post_thumbnail_url(get_the_ID(), 'thumbnail-size1')

とすることにより任意のサイズ・トリミングされた画像を出力することが可能ですが、Advanced Custom Fieldsで登録した画像についてはどのようにするのだろう?というのが今回のお話になります。

ルート階層に定義された画像フィールドの場合

繰り返しフィールド内でリサイズされた画像を出力することが今回の課題ですが、まずはルート階層に定義された画像フィールドの場合について知っておく必要があるかと思います。

それについてはこちらが参考になりました。

繰り返しフィールド内の画像フィールドの場合

ルート階層に定義された画像フィールドの場合、次のようなコードでリサイズされた画像を出力できます。

<?php wp_get_attachment_image_src(
  get_post_meta(get_the_id(), 'image', false),
  'thumbnail-size1'
  ); ?>

ここで、

get_post_meta(get_the_id(), 'image', false)

の第二引数の'image'はAdvanced Custom Fieldsで定義したカスタムフィールドの名前に相当します。
よって、第二引数に繰り返しフィールド内の画像フィールドの名前を指定すれば良いと考えましたが、うまくいきませんでした。

wp_get_attachment_image_srcの第一引数には画像のアタッチメントIDを指定しますので、get_post_meta以外の方法で画像のURLから画像のアタッチメントIDが取得できるのであれば問題は解決することとなります。

それについてはこちらが参考になりました。

最終的なコードは次のようになりました。

<?php global $wpdb ?>
<?php $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", 画像のURL )); ?>
<img src="<?php echo wp_get_attachment_image_src(
  $attachment[0],
  'thumbnail-size1'
)[0] ?>">

-WEB