繰り返しフィールドでもOK!ACFで画像サイズを指定して出力するコード

執筆・編集 板浪 雅樹2005年から WEB 業界一筋。500サイト超を手がける SEO・WordPress のエキスパート。「公開後こそ本番」を掲げ、データ分析とユーザー視点で成果を引き出す運用を提案。

2005年に制作会社へ入社後、プログラマーからキャリアをスタート。サーバー構築・データベース設計で培った技術を強みに、WordPress テーマ/プラグイン開発やサイト移行の難案件を多数担当してきました。
2010年以降は SEO エンジニアとしても活動領域を拡大。コンテンツ設計・内部リンク最適化・高速化チューニングにより、競合の激しいビッグキーワードで上位獲得を実現してきました。
現在は TREVO のウェブディレクターとして、要件定義から運用改善まで一気通貫でリード。AI ライティングや GA4/Looker Studio を活用したレポーティング手法を開発し、「数字で説明できるサイト運用」をポリシーにクライアントの ROI 最大化を支援しています。
趣味/強み:筋トレとランニングで日々の集中力をキープ。複雑な課題を“仕組み”で解決するのが得意。
モットー:「サイトは資産。改善を止めた瞬間から価値は目減りする」
この記事では、Advanced Custom Fields (ACF) を使用して、画像サイズを指定して表示する方法を解説します。また、functions.php に画像サイズを追加するコードも含めています。
この記事は、公式ドキュメントから引用した内容も含み、PHP 8以降でのエラーを考慮して更新されています。
https://www.advancedcustomfields.com/resources/image/
function.phpに画像サイズを追加するコード
WordPressでは、add_image_size() を使用してカスタム画像サイズを追加できます。
add_image_size( $name, $width, $height, $crop );例:
- フィールド名: ○○○
- true: トリミングする
- false: トリミングしない
add_image_size('○○○', 150, 150, true);画像の出力
- フィールド名: ○○○
<?php
$image = get_field('image');
if( !empty( $image ) ): ?>
<img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
<?php endif; ?>get_field(): ACFで定義された画像フィールドを取得します。- エスケープ処理:
esc_url()とesc_attr()でセキュリティを強化。
画像サイズを指定して出力
- フィールド名: ○○○
- サイズ: △△△
<?php
$image = get_field('○○○');
if( $image ):
$url = esc_url($image['url']);
$title = esc_attr($image['title']);
$alt = esc_attr($image['alt']);
$size = '△△△';
$thumb = esc_url($image['sizes'][ $size ]);
?>
<a href="<?php echo $url; ?>" title="<?php echo $title; ?>">
<img src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" />
</a>
<?php endif; ?>画像サイズを指定して出力(キャプション有)
- フィールド名: ○○○
- サイズ: △△△
必要条件
ACFの「返り値のフォーマット」で「画像配列」を選択。
<?php
$image = get_field('○○○');
if ($image):
$size = '△△△';
$thumb = esc_url($image['sizes'][$size]);
$width = esc_attr($image['sizes'][$size . '-width']);
$height = esc_attr($image['sizes'][$size . '-height']);
if ($image['caption']): ?>
<div class="wp-caption">
<?php endif; ?>
<a href="<?php echo esc_url($image['url']); ?>" title="<?php echo esc_attr($image['title']); ?>">
<img src="<?php echo $thumb; ?>" alt="<?php echo esc_attr($image['alt']); ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
</a>
<?php if ($image['caption']): ?>
<p class="wp-caption-text"><?php echo esc_html($image['caption']); ?></p>
</div>
<?php endif; ?>
<?php endif; ?>繰り返しフィールドで画像サイズを指定
- フィールド名: ○○○
- サイズ: △△△
ACFの繰り返しフィールドを使用する場合のコードです。
<?php
$image = get_sub_field('○○○');
if( $image ):
$url = esc_url($image['url']);
$title = esc_attr($image['title']);
$alt = esc_attr($image['alt']);
$size = '△△△';
$thumb = esc_url($image['sizes'][ $size ]);
?>
<a href="<?php echo $url; ?>" title="<?php echo $title; ?>">
<img src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" />
</a>
<?php endif; ?>注意点
エスケープ処理
出力時は必ず esc_url()、esc_attr()、esc_html() を使用して安全性を確保しましょう。
画像サイズの登録
登録したカスタム画像サイズを再生成する場合、Regenerate Thumbnails プラグインを使用すると便利です。
PHP 8対応
空配列や未定義キーへのアクセスを防ぐため、!empty() を適切に使用してください。
関連の記事
-

無料で学べる「Google アナリティクスアカデミー」がリニューアル
TREVOスタッフ
-
板浪雅樹
-

2024年SEO対策ガイドと最新トレンドと変化への対応策
板浪雅樹
-

TREVOスタッフ
-

【2025年版】GA4で成果を伸ばすWEBサイト改善法|株式会社TREVOの実務ノウハウ
TREVOスタッフ
-

2015年度危険なパスワード一覧
TREVOスタッフ









