みなさんこんにちは!!
今回Wordpressの開発をしていてハマったところ。
それは、保存されている画像のURLからWidthとかHeightの情報ってどうやって取るねん!!!って話。
結論から言うと、下記コードで対応できます。
<?php
  $image_url = 'https://example.com/wp-content/uploads/2023/03/image.jpg'; // 画像のURLを指定
  $image_info = getimagesize( $image_url ); // 画像の情報を取得
  $image_width = $image_info[0]; // 画像のwidthを取得
  $image_height = $image_info[1]; // 画像のheightを取得
?>
この際の$image_infoの中身はこんな感じ。
{
  "0": 1280,
  "1": 1280,
  "2": 2,
  "3": "width=\"1280\" height=\"1280\"",
  "bits": 8,
  "channels": 3,
  "mime": "image/jpeg"
}
上記の0番目がwidth、1番目がheightと言うことです!
以上!
というかそもそもURLからWidthとかHeightとってどうするねん!!
ってあるかもしれませんが、私の場合WordpressをHeadlessCMSとして使用しつつ、フロントではNext.jsを使用する際にNest.jsのImageコンポーネントってwidthとheight必須なので、そこに値を入れるためにWordpressのAPIでwidthとheightを返す必要があるという感じでしたね!!
目次
画像のIDから取得する場合は?
<?php
  $attachment_id = get_post_thumbnail_id(); // 添付ファイルIDを取得
  $image_attributes = wp_get_attachment_image_src( $attachment_id, 'full' ); // 画像の情報を取得
  $image_width = $image_attributes[1]; // 画像のwidthを取得
  $image_height = $image_attributes[2]; // 画像のheightを取得
?>
上記で対応ができます。
ちなみに上記の戻り値はこんな感じ。
[
  "http://ohm-web-magazine.local/wp-content/uploads/2023/03/S__78749758.jpg",
  1280,
  1280,
  false
]
戻り値は連想配列とかではなく、普通に配列。
phpのこういうとこまじでめんどくさいですよねーー。。


	
コメント