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

投稿日:2024.12.19.
更新日:2025.04.12.

WordPress

ACF

株式会社TREVOの月額制ホームページ制作サービス
PR

板浪 雅樹
執筆・編集 板浪 雅樹

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() を適切に使用してください。

関連の記事

CONTACT

ホームページ制作・Web制作に関するご質問やご相談は、
下記フォームよりお問い合わせください。

無料のお見積りや初回のご相談も承っておりますので、「まだ検討中」「ちょっと話を聞いてみたい」といった段階でも大歓迎です。
現状のホームページ診断も無料で実施中です。

0120-83-8567
平日9:00~18:00まで 定休日:土 日 祝