Хук show_admin_bar в WordPress позволяет контролировать отображение панели администратора (тулбара) на сайте, когда пользователь авторизован. Он полезен для скрытия панели для определённых ролей пользователей или полного отключения на фронтенде. Панель не скрывается в админке, так как хук влияет только на отображение на внешней стороне сайта.
apply_filters( 'show_admin_bar', bool $show_admin_bar );
Фильтр show_admin_bar управляет отображением панели администратора, также называемой тулбаром. Чтобы скрыть панель, достаточно вернуть false. Этот способ рекомендуется для случаев, когда необходимо отключить тулбар для определённых пользователей или всех пользователей, кроме администраторов. Настройки пользователя также влияют на отображение панели для авторизованных пользователей.
Параметры
- $show_admin_bar (булевое значение) — указывает, должна ли отображаться панель администратора. По умолчанию:
false.
Использование
Для активации или деактивации панели используйте функцию add_filter() с хендлером, который будет управлять значением $show_admin_bar.
add_filter( 'show_admin_bar', 'custom_show_admin_bar', 10, 1 );
/**
* Кастомизация отображения панели администратора.
*
* @param bool $show_admin_bar Должна ли отображаться панель администратора.
* @return bool
*/
function custom_show_admin_bar( $show_admin_bar ) {
// Внесите изменения в значение $show_admin_bar при необходимости
return $show_admin_bar;
}
Пример 1: Полное отключение панели администратора на фронтенде
Если нужно скрыть панель администратора для всех пользователей на внешней стороне сайта, используйте встроенную функцию __return_false:
add_filter( 'show_admin_bar', '__return_false' );
Пример 2: Отображение панели администратора только для администраторов
Чтобы показать панель администратора только для пользователей с ролью администратора, можно использовать проверку роли:
add_filter( 'show_admin_bar', 'show_admin_bar_for_admins_only' );
function show_admin_bar_for_admins_only( $show_admin_bar ) {
return current_user_can( 'administrator' ) ? $show_admin_bar : false;
}
Пример 3: Скрытие панели для всех, кроме редакторов и администраторов
Если нужно скрыть панель для всех, кроме пользователей с правами редактора и администратора, можно сделать это с помощью проверки возможности редактирования чужих записей:
add_filter( 'show_admin_bar', 'show_admin_bar_for_editors_and_admins' );
function show_admin_bar_for_editors_and_admins( $show_admin_bar ) {
return current_user_can( 'edit_others_posts' ) ? $show_admin_bar : false;
}
Пример 4: Отключение панели администратора на определённых страницах
Иногда требуется отключить панель только на определённых страницах. В этом примере панель будет скрыта на страницах с шаблоном landing-page.php:
add_filter( 'show_admin_bar', 'disable_admin_bar_on_landing_page' );
function disable_admin_bar_on_landing_page( $show_admin_bar ) {
if ( is_page_template( 'landing-page.php' ) ) {
return false;
}
return $show_admin_bar;
}
Пример 5: Отключение панели администратора в админке
Хотя хук show_admin_bar влияет только на фронтенд, если необходимо скрыть тулбар в админке, можно использовать следующий метод:
// Отключение тулбара в админ-панели
remove_action( 'in_admin_header', 'wp_admin_bar_render', 0 );
Заключение
Хук show_admin_bar — удобный инструмент для управления панелью администратора на фронтенде WordPress. С его помощью можно гибко настраивать видимость панели в зависимости от роли пользователя или других условий, делая интерфейс более удобным для различных групп пользователей.