Метод WP_User::add_cap()
в WordPress используется для добавления определённой возможности (capability) конкретному пользователю. Изменение прав сохраняется в базе данных и остаётся активным до тех пор, пока оно не будет удалено.
WP_User::add_cap( string $cap, bool $grant = true )
Параметры:
$cap
(строка, обязательный): Название возможности, которую вы хотите добавить пользователю.$grant
(логический, необязательный): Указывает, разрешена ли возможность для пользователя. По умолчаниюtrue
.
Описание:
Метод add_cap()
добавляет определённое право пользователю, сохраняя это изменение в базе данных (в таблице wp_options
, поле wp_user_roles
). Это означает, что изменения прав будут действовать до тех пор, пока они не будут отменены. Лучше всего использовать этот метод во время активации или деактивации темы/плагина, чтобы предотвратить дублирующиеся вызовы.
Добавление права редактирования постов пользователю
Пример показывает, как добавить пользователю с ID 123 возможность редактировать посты:
$user = new WP_User( 123 );
$user->add_cap( 'can_edit_posts' );
Добавление нескольких возможностей пользователю
Для добавления нескольких возможностей пользователю нужно вызывать add_cap()
несколько раз, поскольку метод принимает только одно право за раз:
$user = new WP_User( 123 );
$user->add_cap( 'can_edit_posts' );
$user->add_cap( 'can_delete_posts' );
Примечания:
- Индивидуальные права: Метод добавляет права конкретному пользователю и не влияет на роли. Если требуется изменить права для всех пользователей роли, используйте
WP_Role::add_cap()
. - Сохранение в базе данных: Все изменения прав сохраняются в базе данных и остаются в силе до их явного удаления. Поэтому выполнение таких изменений рекомендуется в момент активации плагинов или тем.
Пример использования в плагине
Для добавления прав при активации плагина можно использовать register_activation_hook()
:
register_activation_hook( __FILE__, 'add_plugin_caps_for_user' );
function add_plugin_caps_for_user() {
$user = new WP_User( 123 );
$user->add_cap( 'can_edit_posts' );
}
Заключение
Метод WP_User::add_cap()
в WordPress позволяет добавлять отдельные права конкретным пользователям, сохраняя изменения в базе данных. Это изменение действует до явного удаления и может быть использовано для предоставления индивидуальных возможностей пользователям. Рекомендуется вызывать этот метод при активации плагинов или тем, чтобы избежать дублирующихся изменений.