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のインストールされたパスが定義されたグローバル定数らしい。
はい、タイトルだけでほぼ解決してしまっていますが、今回はWordPressで定義されている定数、「ABSPATH」についてのメモです。 初見では何者なのか全く分からなかったの...