Изменить максимальный размер загружаемых файлов в Вордпресс очень просто. Сегодня мы пойдем немного дальше, и я покажу на конкретном примере, как его изменить для определенной группы пользователей.
Условия задачи следующие:
На сайте есть группа авторов, необходимо чтобы они могли загружать файлы размером не более 1 Mб. Это правило не должно касаться других групп пользователей: администраторов, редакторов, например. У них должны быть дефолтные серверные значения.
Задача решается с помощью хука upload_size_limit, который традиционно размещаем в файле функций (functions.php) активной темы.
Но прежде, нам нужно определить роль текущего пользователя, для этого перед хуком создадим дополнительную функцию danilin_get_current_user_role(), с помощью которой будем проверять роль пользователя.
function danilin_get_current_user_role() { if( is_user_logged_in() ) { $user = wp_get_current_user(); $role = ( array ) $user->roles; return $role[0]; } else { return false; } }
Задачу можно решить и без дополнительных функций, с помощью current_user_can(). Но в Кодексе Вордпресс есть замечание, в котором сказано, что вызов функции с именами ролей может работать некорректно.
Теперь непосредственно проверка и установка лимита.
if ( danilin_get_current_user_role() == 'author' ) { function danilin_upload_size_limit( $bytes ){ return 1048576; } add_filter( 'upload_size_limit', 'danilin_upload_size_limit' ); }
В Вордпресс по умолчанию пять основных ролей.
- Администратор (administrator);
- Редактор (editor);
- Автор (author);
- Участник (contributor);
- Подписчик (subscriber).
Есть еще шестая роль суперадминистратора, которая используется в режиме мультисайт Вордпресс.
Лимит задается в байтах.
Кто забыл, напомню, что в одном мегабайте 1024 килобайт, а в одном килобайте 1024 байт, получается:
- 1 Мб = 1024*1024 = 1 048 576 байт
- 512 Кб = 512*1024 = 524 288 байт
и так далее.
Общие лимиты
В Вордпресс есть несколько способов задать дефолтный максимальный размер загружаемых файлов.
Functions.php
В файле functions.php активной темы.
@ini_set( 'upload_max_size' , '1M' ); @ini_set( 'post_max_size', '1M');
PHP.ini
Создать в корне сайта файл php.ini
upload_max_filesize = 1M post_max_size = 1M
Htaccess
В корневом файле .htaccess, который тоже нужно создать, если он отсутствует.
php_value upload_max_filesize 1M php_value post_max_size 1M
1M — это 1 Мегабайт.
Делаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее