WordPress как на ладони
wordpress jino

remove_role() WP 2.0

Удаляет роль из WordPress.

Эти настройки сохраняются в БД (таблица wp_options, поле wp_user_roles), поэтому лучше изменять их во время активации/дезактивации плагина или темы.

Работает на основе: wp_roles(), WP_Roles()

Хуков нет.

Возвращает

Ничего не возвращает.

Использование

remove_role( $role );
$role(строка) (обязательный)
Название роли. Например: administrator, editor, author, contributor, subscriber.
По умолчанию: нет

Примеры

#1. Удалим роль "подписчик" (subscriber):

register_deactivation_hook( __FILE__, 'myplugin_deactivate' );
function myplugin_deactivate(){
	remove_role( 'subscriber' );
}

Код remove role: wp-includes/capabilities.php VER 4.9.1

<?php
function remove_role( $role ) {
	wp_roles()->remove_role( $role );
}

Cвязанные функции

Из метки: Роли и возможности (role capabilities)

Еще из раздела: Роли и возможности

Кликни тут

кликни тут nanostation

wifimag.ru

remove_role 7 комментариев
  • Доброго времени суток.

    Вопрос, возможно ли востановить роль после remove_role()?

    Ответить1.3 года назад #
    • Kama4696

      Роли и данные о них хранятся в опциях, при удалении они удаляются... См. опцию get_option('wp_user_roles').

      Вариант восстановить роль - это запустить тот код который создал эту роль. Или скопировать настройки из дампа базы данных где эта роль еще есть...

      Ответить1.3 года назад #
      • Сенкс.
        Я немного не корректно вопрос задал. Имелось в виду возможно ли восстановить дефолтную роль после удаления? Например "author".

        Ответить1.3 года назад #
        • Kama4696

          Можно. Во время установки функция wp_install() вызывает функцию populate_roles(). Смотрим код: /wp-admin/includes/schema.php

          И видим как создается роль автора. Собираем все данные и запускаем полученный код:

          add_role('author', 'Author');
          
          // из populate_roles_160
          $role = get_role('author');
          $role->add_cap('upload_files');
          $role->add_cap('edit_posts');
          $role->add_cap('edit_published_posts');
          $role->add_cap('publish_posts');
          $role->add_cap('read');
          $role->add_cap('level_2');
          $role->add_cap('level_1');
          $role->add_cap('level_0');
          
          // из populate_roles_210
          $role->add_cap('delete_posts');
          $role->add_cap('delete_published_posts');
          

          Автор восстановлен.

          П.С. Если не сложно продублируй этот вопрос в вопросы. В принципе полезная инфа, может кому пригодиться...

          1
          Ответить1.3 года назад #
  • Добрый день.

    Какой день подряд шаманю с ролью "subscriber", но ни как не получается скрыть админку "http://localhost/wp-admin/" от подписчика.

    Я хочу чтобы новый пользователь не имел доступа к админ панеле, т.е. даже не видел список опубликованных постов.

    Изменяя вручную права нового пользователя "wp_usermeta->wp_capabilities" c "a:1:{s:10:"subscriber";b:1;}" на "a:1:{s:0:"subscriber";b:1;}" получаем на wp-admin - "У вас недостаточно полномочий для доступа к этой странице" т.е. то что мне нужно.

    Не подскажите как сделать это автоматически при регистрации пользователя? В каком файле формируется эта строка "a:1:{s:10:"subscriber";b:1;}"? Не могу понять.

    Спасибо

    Ответить1.2 года назад #

Здравствуйте, !

Ваш комментарий
Предпросмотр