Как добавить роль пользователя в Wordpress?
Добрый день! У меня возникла проблема при добавлении роли пользователя в WordPress. Я создал свою роль с помощью функции add_role(), но при попытке присвоить ей определенные возможности, они не применяются.
Вот код, который я использовал:
function custom_role() {
add_role( 'custom_role', 'Custom Role', array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false
) );
}
add_action( 'init', 'custom_role' );
После добавления этого кода в functions.php, роль "Custom Role" появляется в списке ролей в админке, но возможности, определенные в массиве, не отрабатывают.
Подскажите, пожалуйста, что я делаю не так и как я могу корректно добавить роль пользователя с нужными мне возможностями?
Ответы:
Проблема, с которой вы столкнулись, связана с тем, что функция add_role() не обновляет существующие роли, а только добавляет новую роль. Поэтому, если вы пытаетесь обновить уже существующую роль, рекомендуется использовать функцию update_role().
Вот как может выглядеть исправленный код:
function custom_role() {
$role = 'custom_role';
$display_name = 'Custom Role';
// Проверяем, существует ли уже такая роль
if ( ! get_role( $role ) ) {
// Если роль не существует, создаем ее
add_role( $role, $display_name, array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false
) );
} else {
// Если роль уже существует, обновляем ее
$wp_roles = wp_roles();
$wp_roles->roles[$role]['name'] = $display_name;
$wp_roles->roles[$role]['capabilities'] = array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false
);
$wp_roles->role_objects[$role]->capabilities = $wp_roles->roles[$role]['capabilities'];
$wp_roles->role_objects[$role]->name = $display_name;
$wp_roles->role_names[$role] = $display_name;
}
}
add_action( 'init', 'custom_role' );
В этом коде мы сначала проверяем, существует ли уже роль с заданным именем. Если роль не существует, мы создаем ее с помощью функции add_role(). Если роль уже существует, мы используем функцию wp_roles() для доступа к объекту ролей и обновления настроек роли.
Надеюсь, эта информация поможет вам решить вашу проблему с добавлением роли пользователя в WordPress.