画像サイズで条件分岐

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

Advanced Custom Fields で見出し・テキスト・画像欄をつけるという要望で、画像は複数選択で個別のリンク設定はなしなのでギャラリーフィールドにする方が使いやすいが、画像の向きによって画像の外側の要素が違う…となると、繰り返しフィールドで画像の向きをチェックボックスで選択?

しかし、投稿時の手間は1つでも少ないほうが良いので、画像サイズを取得して縦横のサイズ比で分岐することにした。

ギャラリーフィールドにアップした元画像のURLは $image[url] で取得できるので、

<?php $images = get_field('images'); if( $images ) { ?><?php foreach( $images as $image ): ?><?php $imagesize = getimagesize($image[url]); if ($imagesize[0] > $imagesize[1]) { ?>
<div class="horizontal"><img src="<?php echo $image['sizes']['horizontal']; ?>" alt="" /></div>
<?php } else { ?>
<div class="vertical"><img src="<?php echo $image['sizes']['vertical']; ?>" alt="" /></div>
<?php } ?>
<?php endforeach; } ?>

2021.6追記
通常の画像フィールドで「配列」の場合、$image = get_field(‘xxxx’); としたら、$image[‘url’]、$image[‘alt’]、$image[‘width’]、$image[‘height’] となる。

2024.2追記
フルサイズでうまくサイズが取得できなかったので、$width = $image[‘sizes’][‘large-width’]; $height = $image[‘sizes’][‘large-height’]; で実装。

その他のAdvanced Custom Fields に関する記事一覧

Advanced Custom Fields に関する記事一覧ページへ