Ограничиваем размер загружаемых файлов для группы пользователей Вордпресс

8 мая 2018

Изменить максимальный размер загружаемых файлов в Вордпресс очень просто. Сегодня мы пойдем немного дальше, и я покажу на конкретном примере, как его изменить для определенной группы пользователей.

20 новейших лендингов для Вордпресс 2018 года

Условия задачи следующие:

На сайте есть группа авторов, необходимо чтобы они могли загружать файлы размером не более 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' );
}

В Вордпресс по-умолчанию пять основных ролей.

  1. Администратор (administrator);
  2. Редактор (editor);
  3. Автор (author);
  4. Участник (contributor);
  5. Подписчик (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 Мегабайт.

Всё самое новое и интересное я публикую в своём Телеграм-канале. Подписывайтесь!

Иван Данилин
Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

Добавить комментарий

Лучшие премиум-темы для Вордпресс с пожизненной поддержкой
Подробнее