みなさんこんにちは!!
今回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のこういうとこまじでめんどくさいですよねーー。。
コメント