Функция author_can()
в WordPress проверяет, обладает ли автор указанного поста определённой возможностью (capability). Это полезно для того, чтобы убедиться, что у автора записи есть необходимые права для выполнения определённых действий, таких как редактирование, публикация, удаление и т.д.
author_can( int|WP_Post $post, string $capability, mixed $args ): bool
Основные параметры:
$post
(int|WP_Post) — ID записи или объект записи, возможности автора которой нужно проверить.$capability
(string) — Название возможности, которую необходимо проверить (например,edit_posts
,publish_posts
).$args
(mixed, опционально) — Дополнительные параметры, обычно начинающиеся с идентификатора объекта (например, ID поста или ключ метаданных). Используется, если проверяется мета-возможность (например,edit_post_meta
).
Пример 1: Проверка возможности публикации постов
Допустим, вы хотите узнать, может ли автор конкретной записи публиковать посты. Для этого можно использовать следующий код:
if ( author_can( $post->ID, 'publish_posts' ) ) {
echo 'Автор записи имеет право публиковать посты!';
} else {
echo 'Автор не может публиковать посты.';
}
Пример 2: Проверка права на редактирование метаданных поста
Если вы хотите узнать, имеет ли автор поста право редактировать метаданные записи, можно использовать такой код:
$meta_key = 'custom_meta_field';
if ( author_can( $post->ID, 'edit_post_meta', $post->ID, $meta_key ) ) {
echo 'Автор может редактировать метаданные поста!';
} else {
echo 'Автор не имеет права редактировать метаданные.';
}
Пример 3: Проверка права на удаление постов
Допустим, вам нужно проверить, может ли автор текущего поста удалять записи. Это можно сделать следующим образом:
if ( author_can( $post->ID, 'delete_posts' ) ) {
echo 'Автор может удалять записи.';
} else {
echo 'Автор не имеет права удалять записи.';
}
Пример 4: Проверка возможности редактирования поста
Часто требуется узнать, может ли автор редактировать собственные записи. В таком случае используйте следующий код:
if ( author_can( $post->ID, 'edit_post', $post->ID ) ) {
echo 'Автор может редактировать эту запись.';
} else {
echo 'Автор не имеет права редактировать эту запись.';
}
Когда использовать author_can()
Функция полезна в тех случаях, когда вам нужно проверить права автора на уровне конкретной записи, а не роли пользователя в целом. Например, если пост был создан другим пользователем, но редактируется текущим автором, важно учитывать, что возможности могут отличаться.
Заключение
Функция author_can()
— это эффективный способ для проверки прав автора записи на выполнение различных операций с контентом. Она особенно полезна для обеспечения безопасности и настройки пользовательских интерфейсов в зависимости от возможностей конкретных пользователей.