web-dev-qa-db-ja.com

フロントエンドでSVGディメンションをアップロードする

Daryll DoyleによるSafe SVGのようなサードパーティのプラグインの助けを借りてWordPressのバックエンドメディアアップローダを通してSVG画像をうまくアップロードしたので、SVGファイルのwidthheight、またはviewBox属性に格納される画像の寸法を取得する方法wp_get_attachment_image_src()のようなWordPress関数をフロントエンドで使用するには?

PNGやJPEGなどの他の種類の画像とは異なり、WordPressはSVG画像の寸法をシステムに保存しません。

これが通常のPNGです: enter image description here 

そしてこれがSVG画像です: enter image description here 

WordPressのバックエンドからファイルをアップロードしてそれらの寸法を取得し、その添付ファイルのデータベースに直接書き込むために起動するたびに起動するテーマのfunctions.phpで使用できるフックがあるでしょうか。

ありがとうございます。

2
Vadim H

SVGの使用についてはTom J Nowellに同意しますが、アップロードが実際の画像の場合は、wp_get_attachment_image_srcを使用して添付ファイルの属性を利用できます。

WPメディアアップローダを使用するとき、これらの寸法は実際にはすでに記録されて保存されています。おそらく、使用しているプラ​​グインはWPメディアアップローダを使用しているでしょう。

添付ファイルが画像の場合は4つの属性(0 = URL、1 =幅、2 =高さ、3 = is_intermediate)が格納されます。画像でない場合はfalseです。

したがって、この例のようにこれらの属性を呼び出してエコーすることができます。

$img_atts = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'medium');
$img_src = $img_atts[0];

私はこれを使ってog:image:widthとog:image:heightのポストごとのOGタグを(他のOGタグと一緒に)作成するために画像の寸法(属性1と2)をエコーし​​ます。

あなたはここでより多くの情報を見つけることができます: https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/

1
Trisha