Описание map_meta_cap
— Filter
Хук map_meta_cap позволяет изменить мета-правами (capabilities) пользователей в WordPress. Он срабатывает при проверке прав доступа к различным функциям и объектам, позволяя разработчикам адаптировать систему прав доступа к своим требованиям
Примеры использования
Пример добавления кастомного мета-прав для определенной роли:
add_filter('map_meta_cap', function($caps, $cap, $user_id, $args) {
if ($cap === 'edit_post') {
$caps[] = 'edit_others_posts';
}
return $caps;
});
В этом примере мы добавляем право ‘edit_others_posts’ для пользователей, которые пытаются редактировать посты
Пример ограничения прав для конкретного пользователя:
add_filter('map_meta_cap', function($caps, $cap, $user_id) {
if ($cap === 'delete_post' && $user_id == 2) {
return ['do_not_allow'];
}
return $caps;
});
Здесь мы ограничиваем возможность удаления постов для пользователя с ID 2
Пример добавления дополнительного мета-прав для пользовательских типов записей:
add_filter('map_meta_cap', function($caps, $cap, $user_id, $args) {
if ($cap === 'edit_product') {
$caps[] = 'manage_woocommerce';
}
return $caps;
});
Мы добавляем право ‘manage_woocommerce’ для редактирования товаров в WooCommerce
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо настроить права доступа в зависимости от условий, таких как роли пользователей или типы записей
– Производительность
Хук может влиять на производительность, если используется в больших объемах, поэтому старайтесь минимизировать количество вызовов
– Предупреждения
Обязательно тестируйте изменения прав, чтобы избежать случайного блокирования доступа к важным функциям
Альтернативы
Тип: filter
Этот хук позволяет проверять возможности пользователя на более общем уровне
Используйте его, если необходимо более детально настроить права для конкретного пользователя