Как удалить стили админ-панели только из фронтенда?
Когда пользователь авторизован, админ-панель добавляет следующий код в секцию <head>
страницы:
<style media="screen" type="text/css">
html { margin-top: 28px !important; }
* html body { margin-top: 28px !important; }
</style>
Я могу убрать это, отключив админ-панель:
/* Отключение админ-панели */
add_filter( 'show_admin_bar', '__return_false' );
или удалив её полностью:
/* Удаление админ-панели */
remove_action('init', 'wp_admin_bar_init');
Я хочу сохранить админ-панель в административном интерфейсе и только удалить CSS из фронтенда.
Я уже использую сброс CSS, где установлено margin: 0px
, но стили админ-панели переопределяют это.
Как можно удалить эти стили только из фронтенда?
PS. Я знаю, что могу отключить админ-панель для каждого пользователя отдельно, но это не то, что мне нужно.

function hide_admin_admin_bar_from_front_end(){
if (is_blog_admin()) {
return true;
}
return false;
}
add_filter( 'show_admin_bar', 'hide_admin_bar_from_front_end' );
Редактирование:
Как предложил @Walf в комментариях, это можно записать как:
add_filter('show_admin_bar', 'is_blog_admin');

Ах :) Я проверял для админа, когда пробовал что-то подобное. Забыл про is_blog_admin
. Спасибо :)

@HiroProtagonist это можно определить в любом плагине или в functions.php вашей темы.

Однако это не удаляет CSS margin-top: 28px !important
на фронтенде, верно?

Можно немного сократить: add_filter( 'show_admin_bar', function (){
return is_blog_admin()
});

Можно значительно сократить: add_filter('show_admin_bar', 'is_blog_admin');
Я предложил это изменение, но оно было отклонено. Видимо, два опытных рецензента посчитали это слишком кардинальным изменением, не осознав, что это в точности то же самое.

Если вы хотите удалить панель администратора (админ-бар) И CSS-отступ со страницы, используйте этот код:
function wpse_99333_hide_admin_bar_from_front_end(){
if ( is_blog_admin() ) {
return true;
}
remove_action( 'wp_head', '_admin_bar_bump_cb' );
return false;
}
add_filter( 'show_admin_bar', 'wpse_99333_hide_admin_bar_from_front_end' );
Функция _admin_bar_bump_cb
отвечает за вставку CSS (находится в файле wp-includes/admin-bar.php)

Я бы сделал так:
Удалить админ-бар / CSS в head / body class
show_admin_bar(false);
Или если нужно просто: Удалить CSS с margin-top
для html
в <head>
function remove_admin_bar_bump() {
remove_action('wp_head', '_admin_bar_bump_cb');
}
add_action('get_header', 'remove_admin_bar_bump');
Проверено на: Версии 4.7.3

Недавно мне потребовалось сделать подобное — я хотел убрать стандартные inline CSS стили WordPress для админ-панели (чтобы она не отображалась в верхней части страницы), но при этом оставить саму панель. Я размещал админ-панель внизу страницы, а не вверху.
Вот что помогло мне отключить вставку стилей из функции _admin_bar_bump_cb. Я добавил следующий код в файл functions.php:
// Удаляем inline CSS стили WordPress для админ-панели
function hide_admin_bar_from_front_end(){
remove_action( 'wp_head', '_admin_bar_bump_cb' );
return true;
}
add_filter( 'show_admin_bar', 'hide_admin_bar_from_front_end' );
