WordPressでアップロードしたファイルのファイルサイズを取得するには、ファイルのURLのドメイン部分をABSPATHを利用して絶対パスへ置き換える必要があります。

PHPでは、ファイルサイズを取得できるfilesize()という関数があるのですが、そのためにファイルの絶対パスを取得しなくてはいけないのです。

例えば、wp_get_attachment_image_src()などを利用して取得したファイルのURLが以下のような場合、

https://wemo.tech/wp-content/..../file.jpg

ドメイン部分の「https://wemo.tech/」をWordPressで定義されているABSPATHという定数の中身に置き換えます。

ABSPATHは末尾に/のついたパスなので、ドメインの後ろの/までを置き換えることに注意。

例:ドメイン部分をABSPATHの中身に置き換える

$file_url = "ファイルのURLパス";   //サイズを知りたいファイルのURLを取得したとします。

//ドメイン部分をABSPATHに変換して絶対パスを取得
$file_path = str_replace(esc_url(home_url('/')), ABSPATH, $file_url);
//filesize()でファイルサイズ取得し、size_format()で単位変換
$file_size = size_format(filesize($file_path));

ドメイン部分の文字列はWordPressの関数home_url('/')で取得できるので、このhome_url('/')と、ABSPATHの中身である文字列をPHPの関数str_replace()で置き換えたものが、絶対パスになります。

あとは、PHPでファイルサイズを取得する流れと同じく、filesize()size_format()を使用すれば完了です。

 

「そもそもABSPATHとはなんだ?」という方は下の記事を参考にしてみてください。

ABSPATHとはなんぞや。WordPressのインストールされたパスが定義されたグローバル定数らしい。ABSPATHとはなんぞや。WordPressのインストールされたパスが定義されたグローバル定数らしい。
目次
- Thank you for reading. -

コメント

コメントする