Функция author_can() в WordPress: проверка прав доступа

# Функция AUTHOR_CAN() в WordPress

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

## Основная информация

- **Версия WordPress:** начиная с 2.9.0
- **Время выполнения:** 
  - 1 раз — 0.002667 сек (очень медленно)
  - 50000 раз — 1.86 сек (быстро)
- **Версия PHP:** 7.1.11
- **Версия WordPress:** 4.9.4
- **Хуки:** отсутствуют

## Возвращаемое значение

Функция возвращает true или false. Это означает:
- true — автор поста имеет необходимые права.
- false — автор поста не имеет этих прав.

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

Функция вызывается следующим образом:

```php
author_can( $post, $capability );
  • $post (int/WP_Post) (обязательный): ID поста или объект поста.
  • $capability (string) (обязательный): название права.

Примеры

Пример 1: Проверка, может ли автор текущего поста публиковать посты

if( author_can( $post->ID, 'publish_posts' ) ){
    echo 'Автор поста может публиковать посты';
}

Этот код проверяет, может ли автор текущего поста (используя его ID) публиковать новые посты. Если да, то выводится сообщение.

Измените пример по своему усмотрению

Вы можете написать свой собственный пример использования функции.

История изменений

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

Код функции

Вот как выглядит код функции author_can():


function author_can( $post, $capability, ...$args ) {
$post = get_post( $post );
if ( ! $post ) {
return false;
}

$author = get_userdata( $post->post_author );

if ( ! $author ) {
    return false;
}

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

}

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

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

Leave a Reply

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