add_role()

Добавляет роль, если она не существует
Функция WordPress
INT 2.0.0
WordPress Icon

Описание функции

Функция add_role() добавляет новую роль в WordPress, если она еще не существует.

Роли в WordPress определяют набор разрешений и возможностей для пользователей. По умолчанию в WordPress есть несколько предопределенных ролей, таких как администратор, автор, редактор и т. д. Однако иногда может возникнуть необходимость создать новую роль с определенными разрешениями.

Функция add_role() позволяет создать новую роль, указав ее имя, отображаемое имя и список разрешений.

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

add_role( string $role, string $display_name, bool[] $capabilities = array() ): WP_Role|void

Пример использования функции add_role():

add_role( 'custom_role', 'Custom Role', array( 'edit_posts' => true, 'delete_posts' => false ) );

В этом примере создается новая роль с именем «custom_role», отображаемым именем «Custom Role» и разрешениями для редактирования постов (edit_posts) и удаления постов (delete_posts).

  • $role (обязательный): Имя роли.
  • $display_name (обязательный): Отображаемое имя роли.
  • $capabilities (необязательный): Список разрешений, заданных в виде массива, где ключами являются имена разрешений, например, array( 'edit_posts' => true, 'delete_posts' => false ). По умолчанию: array().

Функция возвращает объект WP_Role, если роль была успешно добавлена.

<?php
/**
 * Пример использования функции add_role()
 */
// Добавление новой роли
add_role( 'custom_role', 'Custom Role', array(
    'edit_posts' => true,
    'delete_posts' => false
) );
?>

В этом примере создается новая роль с именем «custom_role», отображаемым именем «Custom Role» и разрешениями для редактирования постов (edit_posts) и удаления постов (delete_posts).

Примеры использования

Добавление новой роли


/**
 * Добавление новой роли.
 *
 * @param string $role         Название роли.
 * @param string $display_name Отображаемое название роли.
 * @param array  $capabilities Список возможностей, где ключ - название возможности, а значение - true или false.
 *                             Например: array( 'edit_posts' => true, 'delete_posts' => false ).
 *                             По умолчанию: array().
 *
 * @return WP_Role|void Объект WP_Role, если роль добавлена.
 */
function add_role( $role, $display_name, $capabilities = array() ) {
    // Код функции add_role()
}

Функция add_role() используется для добавления новой роли в WordPress. Она принимает три параметра:

  • $role — обязательный параметр, указывающий название роли.
  • $display_name — обязательный параметр, указывающий отображаемое название роли.
  • $capabilities — необязательный параметр, представляющий список возможностей для роли. В этом параметре указывается массив, где ключ — название возможности, а значение — true или false, указывающее, имеет ли роль данную возможность. По умолчанию, список возможностей пуст.

Настройка прав доступа для роли


// Добавление новой роли с правами доступа
$role = add_role( 'editor', 'Editor', array(
    'edit_posts' => true,
    'delete_posts' => false
) );
// Проверка, добавлена ли роль
if ( null !== $role ) {
    echo 'Роль добавлена.';
} else {
    echo 'Ошибка при добавлении роли.';
}

В приведенном примере мы добавляем новую роль с названием «editor» и отображаемым названием «Editor». Роль будет иметь право редактировать записи (edit_posts), но не иметь право удалять записи (delete_posts).

Функция add_role() возвращает объект WP_Role, если роль была успешно добавлена. Поэтому мы проверяем, не равен ли объект $role значению null, чтобы убедиться, что роль была добавлена.

Удаление роли


// Удаление роли
$result = remove_role( 'editor' );
// Проверка, удалена ли роль
if ( $result ) {
    echo 'Роль удалена.';
} else {
    echo 'Ошибка при удалении роли.';
}

В данном примере мы удаляем роль с названием «editor». Функция remove_role() возвращает true, если роль была успешно удалена, и false в противном случае. Мы проверяем значение переменной $result, чтобы определить, удалена ли роль.

Получение объекта роли


// Получение объекта роли
$role = get_role( 'editor' );
// Проверка, получен ли объект роли
if ( null !== $role ) {
    echo 'Объект роли получен.';
} else {
    echo 'Ошибка при получении объекта роли.';
}

В приведенном примере мы получаем объект роли с названием «editor». Функция get_role() возвращает объект WP_Role, если роль существует, и null в противном случае. Мы проверяем значение переменной $role, чтобы определить, получен ли объект роли.

Вопросы и ответы

Как добавить новую роль в WordPress?

Функция add_role() в WordPress позволяет добавить новую роль пользователю, если она еще не существует.

Для добавления новой роли необходимо вызвать функцию add_role() и передать ей следующие параметры:

  • $role — обязательный параметр, представляющий название роли.
  • $display_name — обязательный параметр, представляющий отображаемое имя роли.
  • $capabilities — необязательный параметр, представляющий список возможностей, присвоенных роли. По умолчанию, список возможностей пуст.

В итоге, функция add_role() возвращает объект WP_Role, представляющий добавленную роль, или ничего, если роль не была добавлена.

Ниже приведен пример кода из документации WordPress, демонстрирующий использование функции add_role():


// Добавление новой роли "editor"
$result = add_role(
    'editor',
    'Editor',
    array(
        'edit_posts' => true,
        'delete_posts' => false
    )
);
if ( null !== $result ) {
    echo 'Роль успешно добавлена!';
} else {
    echo 'Не удалось добавить роль.';
}

Как проверить, существует ли определенная роль в WordPress?

Для проверки существования определенной роли в WordPress можно использовать функцию get_role().

Функция get_role() принимает один параметр — название роли, и возвращает объект WP_Role, представляющий найденную роль, или null, если роль не существует.

Ниже приведен пример кода из документации WordPress, демонстрирующий использование функции get_role():


// Проверка существования роли "editor"
$role = get_role( 'editor' );
if ( null !== $role ) {
    echo 'Роль существует!';
} else {
    echo 'Роль не существует.';
}

Как изменить название существующей роли в WordPress?

Изменение названия существующей роли в WordPress можно выполнить с помощью функции wp_roles()->roles[ $role ]->name = $new_name;.

Для изменения названия роли необходимо получить объект WP_Roles с помощью функции wp_roles(), а затем обратиться к свойству roles объекта, где ключами являются названия ролей.

Ниже приведен пример кода из документации WordPress, демонстрирующий изменение названия роли:


// Изменение названия роли "editor" на "Editorial Manager"
wp_roles()->roles['editor']->name = 'Editorial Manager';
echo 'Название роли успешно изменено!';

Как удалить роль из WordPress?

Для удаления роли в WordPress используется функция remove_role(). Она принимает один обязательный параметр — имя роли, которую нужно удалить.


remove_role( 'editor' );

В приведенном выше примере удаляется роль «editor».

Как добавить возможности (capabilities) для определенной роли в WordPress?

Для добавления возможностей для определенной роли в WordPress используется функция add_cap(). Она принимает два обязательных параметра — имя роли и имя возможности, которую нужно добавить.


add_role( 'author', 'Author', array( 'edit_posts' => true, 'publish_posts' => true ) );

В приведенном выше примере создается роль «author» с возможностями «edit_posts» и «publish_posts».

Как удалить возможности (capabilities) у определенной роли в WordPress?

Для удаления возможностей у определенной роли в WordPress используется функция remove_cap(). Она принимает два обязательных параметра — имя роли и имя возможности, которую нужно удалить.


remove_cap( 'editor', 'publish_posts' );

В приведенном выше примере удаляется возможность «publish_posts» у роли «editor».

Как проверить, имеет ли определенная роль определенную возможность (capability) в WordPress?

Для проверки наличия определенной возможности у роли в WordPress можно использовать функцию current_user_can(). Эта функция принимает один аргумент — название возможности (capability), и возвращает true, если текущий пользователь имеет эту возможность, и false в противном случае.

Пример использования функции current_user_can():


if ( current_user_can( 'edit_posts' ) ) {
    echo 'У вас есть возможность редактировать записи.';
} else {
    echo 'У вас нет возможности редактировать записи.';
}

Как получить список всех ролей в WordPress?

Для получения списка всех ролей в WordPress можно использовать функцию wp_roles(). Эта функция возвращает объект, содержащий все роли и их свойства.

Пример использования функции wp_roles():


$roles = wp_roles()->roles;
foreach ( $roles as $role_name => $role_info ) {
    echo 'Роль: ' . $role_name . ', ';
    echo 'Отображаемое имя: ' . $role_info['name'] . ', ';
    echo 'Возможности: ' . implode( ', ', array_keys( $role_info['capabilities'] ) ) . '<br>';
}

Как проверить, является ли пользователь определенной роли в WordPress?

Для проверки принадлежности пользователя к определенной роли в WordPress можно использовать функцию user_can(). Эта функция принимает два аргумента — ID пользователя и название роли, и возвращает true, если пользователь имеет указанную роль, и false в противном случае.

Пример использования функции user_can():


$user_id = 1; // ID пользователя
$role = 'editor'; // Название роли
if ( user_can( $user_id, $role ) ) {
    echo 'Пользователь является редактором.';
} else {
    echo 'Пользователь не является редактором.';
}

Функция add_role() в WordPress используется для добавления новой роли, если она еще не существует. Она принимает три параметра: название роли, отображаемое имя роли и список возможностей, которые присваиваются этой роли. Функция возвращает объект WP_Role, если роль была успешно добавлена.
Для проверки наличия определенной возможности у роли можно использовать функцию current_user_can(). Для получения списка всех ролей в WordPress можно использовать функцию wp_roles(). Для проверки принадлежности пользователя к определенной роли можно использовать функцию user_can().

Связанные элементы

  • Функция remove_role(): удаляет роль.
  • Функция get_role(): возвращает объект роли по ее имени.
  • Хук role_has_cap: позволяет изменить список возможностей для определенной роли.
  • Класс WP_Role: представляет роль в WordPress и содержит методы для работы с ролью, такие как добавление и удаление возможностей.
Обсуждение