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()
.