Добавление возможности для роли в WordPress
WP_ROLES::ADD_CAP() │ ПУБЛИЧНЫЙ │ WP 2.0.0
Метод add_cap позволяет добавлять возможности (capabilities) к ролям пользователей в WordPress.
Возвращаемое значение
Метод ничего не возвращает (null).
Как использовать
Для добавления возможности к роли, используйте следующий код:
global $wp_roles;
$wp_roles->add_cap( $role, $cap, $grant );
Параметры:
$role(строка) (обязательный): имя роли, к которой добавляется возможность.$cap(строка) (обязательный): имя возможности, которую мы добавляем.$grant(логическое значение): указывает, может ли данная роль выполнять эту возможность. По умолчанию:true.
Примеры испол��зования
Пример 1: Добавление возможности редактирования постов для всех авторов
Вы можете разрешить авторам редактировать другие посты (кроме своих):
register_activation_hook( __FILE__, 'add_theme_caps' );
function add_theme_caps() {
// Получаем роль автора. Это также подключает класс WP_Role.
$role = get_role( 'author' );
// Добавляем новую возможность
$role->add_cap( 'edit_others_posts' );
}
Изменения в методе
Изменения с версии 2.0.0
Метод add_cap был введен в версии 2.0.0.
Реализация метода
В файле wp-includes/class-wp-roles.php, метод написан следующим образом:
public function add_cap( $role, $cap, $grant = true ) {
if ( ! isset( $this->roles[ $role ] ) ) {
return; // Если роль не существует, ничего не делаем
}
// Устанавливаем возможность для указанной роли
$this->roles[ $role ]['capabilities'][ $cap ] = $grant;
// Если используется база данных, обновляем опции
if ( $this->use_db ) {
update_option( $this->role_key, $this->roles );
}
}
Связанные функции
Вот некоторые функции, которые могут быть полезны в связке с add_cap:
add_role(): добавляет новую роль.author_can(): проверяет, может ли автор выполнить определенное действие.current_user_can(): проверяет, может ли текущий пользователь выполнить определенное действие.get_editable_roles(): возвращает редактируемые роли.get_role(): получает информацию о роли.grant_super_admin(): предоставляет права супер-администратора.is_super_admin(): проверяет, является ли текущий пользователь супер-администратором.map_meta_cap(): отображает мета-возможности на настоящие возможности.remove_role(): удаляет роль.user_can(): проверяет, может ли пользователь выполнить определенное действие.wp_roles(): возвращает объект, содержащий роли.WP_User::add_cap(): добавляет возможность пользователю.
Эта информация поможет вам лучше понять, как управлять ролями и возможностями в WordPress.