wp_filesize() — это удобная обертка для стандартной функции PHP filesize(), которая предназначена для получения размера файла. В отличие от filesize(), эта функция добавляет возможность фильтрации результата и всегда возвращает целое число (int), что помогает избежать ошибок при работе с различными типами файловых систем, в том числе с удаленными хранилищами, такими как S3 или Google Cloud Storage.
wp_filesize( string $path ): int
Параметры
$path(строка, обязательный) — Путь к файлу, размер которого необходимо получить.
Возвращаемое значение
int— Размер файла в байтах. Если файл не найден или возникла ошибка, функция вернет0.
Хуки
pre_wp_filesize— Этот фильтр позволяет изменить размер файла перед вызовомfilesize(). Он может быть полезен, если файл находится на удаленном сервере, где прямой вызовfilesize()невозможен.wp_filesize— Позволяет модифицировать значение, возвращаемое функциейwp_filesize().
Пример 1: Получение размера существующего файла
В этом примере мы получаем размер файла, находящегося в каталоге:
$path = '/var/www/example/wp-content/uploads/2023/01/sample-image.jpg';
$size = wp_filesize( $path );
if ( $size > 0 ) {
echo 'Размер файла: ' . size_format( $size ) . ' (' . $size . ' байт)';
} else {
echo 'Файл не найден или произошла ошибка.';
}
Этот код выведет размер файла в удобочитаемом формате (например, «58 KB»).
Пример 2: Обработка ошибки при отсутствии файла
Когда файл отсутствует или произошла ошибка, функция вернет 0:
$path = '/var/www/example/wp-content/uploads/2023/01/nonexistent-file.txt';
$size = wp_filesize( $path );
if ( $size === 0 ) {
echo 'Файл не существует или возникла ошибка при получении его размера.';
}
Этот пример продемонстрирует, как обработать ситуацию, когда файл не найден.
Пример 3: Использование фильтра wp_filesize
В данном примере с помощью фильтра wp_filesize изменяется возвращаемый размер файла:
add_filter( 'wp_filesize', function( $size, $file ) {
// Если файл содержит ключевое слово "large", возвращаем фиксированный размер
if ( strpos( $file, 'large' ) !== false ) {
return 10485760; // 10 MB
}
return $size;
}, 10, 2 );
$path = '/var/www/example/wp-content/uploads/2023/01/large-file.jpg';
$size = wp_filesize( $path );
echo 'Размер файла: ' . size_format( $size ) . ' (' . $size . ' байт)';
В этом примере, если в имени файла содержится слово «large», функция всегда будет возвращать размер 10 MB, независимо от реального размера файла.
Заключение
Функция wp_filesize() удобна для работы с файлами, хранящимися как на сервере WordPress, так и на внешних системах хранения. Возможность фильтрации результата делает ее гибкой в работе с удаленными файлами. Кроме того, встроенная проверка на ошибки и преобразование результата в целое число делают ее более надежной по сравнению с filesize().