Функция user_can() в WordPress: использование, примеры, параметры

Функция user_can() в WordPress

Функция user_can() используется для проверки, имеет ли определённый пользователь указанную возможность (capability).

Эта функция похожа на current_user_can(), но в ней в качестве первого параметра передаётся ID пользователя или объект пользователя. Таким образом, мы можем проверить возможности конкретного пользователя.

В параметрах можно указать роль для проверки, но это не рекомендуется, так как может привести к ненадежным результатам.

Возврат Значения

Функция возвращает значение true или false, в зависимости от того, имеет ли пользователь указанную возможность.

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

user_can( $user, $capability );
  • $user (int/WP_User) (обязательный) — ID пользователя или объект пользователя.
  • $capability (string) (обязательный) — имя возможности (capability). Список ролей и возможностей можно найти в документации WordPress.
  • $object_id ... (int) — ID объекта (например, записи или комментария), для которого проверяется возможность. В этом случае $capability должна быть мета-возможностью, а не простой возможностью; например, edit_post, но не edit_posts.

Чтение о мета-возможностях

Если вам нужно больше информации о мета-возможностях, смотрите функцию map_meta_cap(). Она связывает мета-возможности с простыми возможностями на основе ID переданного объекта и имени мета-возможности, и затем эту простую возможность можно проверить against capabilities пользователя.

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

1. Проверим, является ли пользователь с ID 3 администратором

$user_id = 3;
if ( user_can( $user_id, 'manage_options' ) ) {
    // Пользователь имеет возможность управлять параметрами
}

2. Проверим, может ли пользователь удалить записи

global $user_ID;
if ( ! user_can( $user_ID, 'delete_posts' ) ) {
    echo 'У вас нет такой возможности!';
}

3. Проверка, может ли пользователь с ID 141 редактировать запись с ID 1

Это пример проверки мета-возможностей.

if ( user_can( 141, 'edit_post', 1 ) ) {
    echo 'Вы можете редактировать эту запись';
}

Изменения и обновления

  • Версия 3.1.0: функция была введена.
  • Версия 5.3.0: был формализован параметр ...$args, добавив его в сигнатуру функции.

Код функции

Вот как выглядит сама функция:


function user_can( $user, $capability, ...$args ) {
if ( ! is_object( $user ) ) {
$user = get_userdata( $user );
}

if ( empty( $user ) ) {
    // Пользователь не авторизован, создаем объект анонимного пользователя.
    $user = new WP_User( 0 );
    $user->init( new stdClass() );
}

return $user->has_cap( $capability, ...$args );

}

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

Вот некоторые функции, которые связаны с ролями и возможностями (capabilities):

  • add_role() — добавляет новую роль.
  • author_can() — проверяет, может ли автор выполнить определенное действие.
  • current_user_can() — проверяет возможности текущего пользователя.
  • get_editable_roles() — получает список редактируемых ролей.
  • get_role() — получает информацию о роли.
  • grant_super_admin() — предоставляет супер-администраторские права.
  • is_super_admin() — проверяет, является ли пользователь супер-администратором.
  • map_meta_cap() — связывает мета-возможности с простыми возможностями.
  • remove_role() — удаляет существующую роль.
  • wp_roles() — возвращает объект ролей.
  • WP_Roles::add_cap() — добавляет возможность к роли.
  • WP_User::add_cap() — добавляет возможность к пользователю.

Эти функции могут помочь в управлении пользователями и их возможностями в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *