current_user_can()

Возвращает, имеет ли текущий пользователь указанную возможность
Функция WordPress
INT 2.0.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Проверка доступа к определенному действию
  4. Определение возможности редактирования поста
  5. Проверка наличия определенного права доступа
  6. Проверка доступа к настраиваемому типу записи
  7. Определение возможности загрузки медиафайлов
  8. Вопросы и ответы
  9. Как проверить, имеет ли текущий пользователь определенную возможность?
  10. Как использовать функцию current_user_can() для проверки возможности для конкретного объекта?
  11. Как проверить, имеет ли текущий пользователь мета-возможность для определенного объекта?
  12. Как проверить, имеет ли текущий пользователь определенную возможность без указания объекта?
  13. Как проверить, имеет ли текущий пользователь несколько возможностей одновременно?
  14. Как проверить, имеет ли текущий пользователь возможность на основе его роли?
  15. Как проверить, имеет ли текущий пользователь возможность на основе его ID?
  16. Как проверить, имеет ли текущий пользователь возможность на основе его логина?
  17. Как проверить, имеет ли текущий пользователь возможность на основе его email?
  18. Связанные элементы

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

Функция current_user_can() используется для проверки, обладает ли текущий пользователь указанной возможностью (capability). Возможность — это набор прав, который определяет, какие действия может выполнять пользователь в системе WordPress.

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

current_user_can( string $capability, mixed $args ): bool

Функция current_user_can() принимает два параметра:

  • $capability (обязательный) — название возможности, которую нужно проверить.
  • $args (необязательный) — дополнительные параметры, обычно начинающиеся с идентификатора объекта.

Функция возвращает логическое значение true, если текущий пользователь обладает указанной возможностью. Если $capability является мета-возможностью (meta cap) и передан $object_id, функция проверяет, обладает ли текущий пользователь указанной мета-возможностью для указанного объекта.

<?php
// Проверяем, может ли текущий пользователь редактировать пост с ID 123
if ( current_user_can( 'edit_post', 123 ) ) {
    // Текущий пользователь может редактировать пост
    // Добавьте здесь свой код
} else {
    // Текущий пользователь не может редактировать пост
    // Добавьте здесь свой код
}
?>

В приведенном выше примере мы используем функцию current_user_can() для проверки, может ли текущий пользователь редактировать пост с ID 123. Если пользователь обладает возможностью «edit_post» для указанного поста, то выполняется код внутри блока if. В противном случае, выполняется код внутри блока else.

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

Проверка доступа к определенному действию


if ( current_user_can( 'edit_posts' ) ) {
    // Выполняем действие, доступное только пользователям с правом 'edit_posts'
}

В данном примере функция current_user_can() используется для проверки, имеет ли текущий пользователь право на редактирование постов. Если у пользователя есть право ‘edit_posts’, то выполняется определенное действие.

Определение возможности редактирования поста


$post_id = 123; // ID поста, который нужно проверить
if ( current_user_can( 'edit_post', $post_id ) ) {
    // Выполняем действие, доступное только пользователям с правом 'edit_post' для данного поста
}

В этом примере функция current_user_can() используется для проверки, имеет ли текущий пользователь право на редактирование конкретного поста с ID 123. Если у пользователя есть право ‘edit_post’ для данного поста, то выполняется определенное действие.

Проверка наличия определенного права доступа


if ( current_user_can( 'manage_options' ) ) {
    // Выполняем действие, доступное только пользователям с правом 'manage_options'
}

В данном примере функция current_user_can() используется для проверки, имеет ли текущий пользователь право на управление опциями сайта (право ‘manage_options’). Если у пользователя есть это право, то выполняется определенное действие.

Проверка доступа к настраиваемому типу записи


if ( current_user_can( 'edit_my_custom_post_type', $post_id ) ) {
    // Выполняем действие, доступное только пользователям с правом 'edit_my_custom_post_type' для данного типа записи
}

В этом примере функция current_user_can() используется для проверки, имеет ли текущий пользователь право на редактирование конкретного настраиваемого типа записи с ID 123. Если у пользователя есть право ‘edit_my_custom_post_type’ для данного типа записи, то выполняется определенное действие.

Определение возможности загрузки медиафайлов


if ( current_user_can( 'upload_files' ) ) {
    // Выполняем действие, доступное только пользователям с правом 'upload_files'
}

В данном примере функция current_user_can() используется для проверки, имеет ли текущий пользователь право на загрузку медиафайлов (право ‘upload_files’). Если у пользователя есть это право, то выполняется определенное действие.

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

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

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

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


if ( current_user_can( 'edit_posts' ) ) {
    // Текущий пользователь может редактировать записи
} else {
    // Текущий пользователь не может редактировать записи
}

В приведенном примере мы проверяем, может ли текущий пользователь редактировать записи. Если он может, выполняется код внутри блока if, в противном случае выполняется код внутри блока else.

Как использовать функцию current_user_can() для проверки возможности для конкретного объекта?

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


$post_id = 123;
if ( current_user_can( 'edit_post', $post_id ) ) {
    // Текущий пользователь может редактировать указанную запись
} else {
    // Текущий пользователь не может редактировать указанную запись
}

В этом примере мы проверяем, может ли текущий пользователь редактировать запись с идентификатором 123. Если он может, выполняется код внутри блока if, в противном случае выполняется код внутри блока else.

Как проверить, имеет ли текущий пользователь мета-возможность для определенного объекта?

Если необходимо проверить, имеет ли текущий пользователь мета-возможность для определенного объекта, необходимо передать имя мета-возможности в качестве первого аргумента функции, а также идентификатор объекта в качестве второго аргумента.


$post_id = 123;
if ( current_user_can( 'edit_post_meta', $post_id ) ) {
    // Текущий пользователь может редактировать мета-данные указанной записи
} else {
    // Текущий пользователь не может редактировать мета-данные указанной записи
}

В этом примере мы проверяем, может ли текущий пользователь редактировать мета-данные записи с идентификатором 123. Если он может, выполняется код внутри блока if, в противном случае выполняется код внутри блока else.

Как проверить, имеет ли текущий пользователь определенную возможность без указания объекта?

Функция current_user_can() позволяет проверить, обладает ли текущий пользователь определенной возможностью в WordPress. Для этого не требуется указывать объект, к которому относится проверяемая возможность.

Для проверки возможности без указания объекта используйте следующий синтаксис:


if ( current_user_can( 'capability_name' ) ) {
    // Выполняем код, если пользователь обладает возможностью
} else {
    // Выполняем код, если пользователь не обладает возможностью
}

Вместо 'capability_name' укажите имя проверяемой возможности. Например, 'edit_posts' для проверки возможности редактирования записей.

Как проверить, имеет ли текущий пользователь несколько возможностей одновременно?

Если вам необходимо проверить, обладает ли текущий пользователь несколькими возможностями одновременно, вы можете передать их в виде массива в функцию current_user_can().

Для проверки нескольких возможностей используйте следующий синтаксис:


if ( current_user_can( array( 'capability1', 'capability2', 'capability3' ) ) ) {
    // Выполняем код, если пользователь обладает всеми возможностями
} else {
    // Выполняем код, если пользователь не обладает всеми возможностями
}

Вместо 'capability1', 'capability2' и 'capability3' укажите имена проверяемых возможностей. Например, 'edit_posts' и 'publish_posts' для проверки возможности редактирования и публикации записей.

Как проверить, имеет ли текущий пользователь возможность на основе его роли?

Функция current_user_can() также позволяет проверить возможность текущего пользователя на основе его роли.

Для проверки возможности на основе роли используйте следующий синтаксис:


if ( current_user_can( 'role_name' ) ) {
    // Выполняем код, если пользователь обладает возможностью на основе роли
} else {
    // Выполняем код, если пользователь не обладает возможностью на основе роли
}

Вместо 'role_name' укажите имя роли, для которой необходимо проверить возможность. Например, 'administrator' для проверки возможности администратора.

Как проверить, имеет ли текущий пользователь возможность на основе его ID?

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


$user_id = 1;
$capability = 'edit_posts';
if ( current_user_can( $capability, $user_id ) ) {
    echo 'Текущий пользователь имеет возможность редактировать записи.';
} else {
    echo 'Текущий пользователь не имеет возможности редактировать записи.';
}

Как проверить, имеет ли текущий пользователь возможность на основе его логина?

Для проверки возможности на основе логина пользователя, необходимо передать в функцию имя возможности и логин пользователя.


$username = 'admin';
$capability = 'edit_posts';
if ( current_user_can( $capability, $username ) ) {
    echo 'Текущий пользователь имеет возможность редактировать записи.';
} else {
    echo 'Текущий пользователь не имеет возможности редактировать записи.';
}

Как проверить, имеет ли текущий пользователь возможность на основе его email?

Для проверки возможности на основе email пользователя, необходимо передать в функцию имя возможности и email пользователя.


$email = 'admin@example.com';
$capability = 'edit_posts';
if ( current_user_can( $capability, $email ) ) {
    echo 'Текущий пользователь имеет возможность редактировать записи.';
} else {
    echo 'Текущий пользователь не имеет возможности редактировать записи.';
}

Функция current_user_can() является мощным инструментом для проверки возможностей текущего пользователя в WordPress. Она позволяет проверить, имеет ли пользователь определенную возможность на основе его ID, логина или email. Это очень полезно при разработке плагинов или тем, где требуется ограничение доступа к определенным функциям или контенту в зависимости от прав пользователя. Используя функцию current_user_can(), вы можете легко управлять доступом и создавать более безопасные и функциональные сайты на WordPress.

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

  • Функция get_post_type(): возвращает тип записи для указанного объекта записи.
  • Функция get_post_status(): возвращает статус записи для указанного объекта записи.
  • Функция get_post_meta(): возвращает значение мета-поля для указанного объекта записи.
  • Функция wp_get_current_user(): возвращает объект текущего пользователя.
  • Хук pre_get_posts: позволяет изменять параметры запроса перед выполнением запроса к базе данных.
  • Хук wp_insert_post: вызывается после успешного добавления новой записи в базу данных.
  • Хук user_register: вызывается после успешной регистрации нового пользователя.
  • Класс WP_Query: используется для выполнения запросов к базе данных WordPress и получения результатов.
  • Класс WP_User: представляет пользователя WordPress и предоставляет методы для работы с пользователями.
  • Класс WP_Role: представляет роль пользователя в WordPress и предоставляет методы для работы с ролями.
Обсуждение