Использование метода add_cap в WordPress для разрешения участникам загружать медиафайлы не работает

Вопрос или проблема

Я хотел бы разрешить участникам загружать медиафайлы, добавив следующий код в functions.php. Но кнопка “Добавить медиафайл” все равно не отображается.

// Разрешить участникам добавлять медиафайлы
if ( current_user_can('contributor') && ! current_user_can('upload_files') ) {
    add_action('admin_init', 'allow_contributor_uploads');
    function allow_contributor_uploads() {
       $contributor = get_role('contributor');
       $contributor->add_cap('upload_files');
    }
}

Попробуйте заменить current_user_can('contributor') на current_user_can('edit_posts'). Согласно Codex, ‘Передача имен ролей в current_user_can() не рекомендуется, так как это не гарантирует правильную работу.’

Я бы попробовал заключить ваше условное выражение в скобки, чтобы убедиться, что оно правильно обрабатывается:

if ( current_user_can('edit_posts') && ! current_user_can('upload_files') ) {
add_action( 'admin_init', 'allow_contributor_uploads' );
}
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor->add_cap('upload_files');
}

Ответ или решение

Проблема, с которой вы столкнулись, заключается в том, что вы пытаетесь позволить пользователям с ролью «Конtributor» (сопоставимо с «Рецензент») загружать медиафайлы, но код, который вы используете, может быть неправильно структурирован или неправильно реализован. Давайте рассмотрим, как исправить это.

Правильный код для разрешения загрузки медиафайлов

  1. Обновите условие проверки: Вместо проверки current_user_can('contributor'), лучше использовать current_user_can('edit_posts'), так как эта практика более надежна и соответствует документации WordPress.

  2. Структурируйте код: Убедитесь, что добавление способности происходит только один раз при инициализации, и что ваше условие правильно обернуто в фигурные скобки.

Вот исправленная версия вашего кода:

// Позволить рецензентам загружать медиафайлы
add_action('admin_init', 'allow_contributor_uploads');

function allow_contributor_uploads() {
    // Проверяем, является ли пользователь рецензентом и не имеет ли он уже права на загрузку файлов
    if (current_user_can('edit_posts') && !current_user_can('upload_files')) {
        $contributor = get_role('contributor');
        // Добавляем право на загрузку файлов
        $contributor->add_cap('upload_files');
    }
}

Примечания

  • Добавление прав: Этот код добавляет возможность загружать файлы для всех пользователей с ролью «Конtributor». Убедитесь, что код помещен в файл functions.php вашей темы или в плагин, который вы используете.

  • Проверка существующих прав: Если после добавления кода «Добавить медиа» все еще не отображается, попробуйте проверить, правильно ли присвоены права. Возможно, вам потребуется очистить кэш (как в браузере, так и на сервере, если используется кэширование) или протестировать вход/выход из системы.

  • Пользовательские роли: Убедитесь, что используемые вами роли пользователя правильно настроены. Если у вас есть плагины для управления ролями, они могут повлиять на права и возможности пользователей.

Заключение

Следуя этим шагам, вы сможете правильно разрешить пользователям с ролью «Конtributor» загружать медиафайлы. Если проблема сохраняется даже после реализации этих предложений, попробуйте проверить наличие конфликтов с другими плагинами или темами, которые могут вмешиваться в функционал управления правами.

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

Капча загружается...