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] ?>">