Как удалить админ-панель (стиль) только из внешнего интерфейса?

10

При входе в систему панель администратора добавляет в <head>раздел моей страницы следующее :

<style media="screen" type="text/css">
    html { margin-top: 28px !important; }
    * html body { margin-top: 28px !important; }
</style>

Теперь я могу удалить это, отключив админ-бар

/* Disable the Admin Bar. */
add_filter( 'show_admin_bar', '__return_false' );

или полностью удалив

/* Remove admin bar */
remove_action('init', 'wp_admin_bar_init');

Я хотел бы сохранить панель администратора в интерфейсе администратора и удалить только CSS из внешнего интерфейса.

Я уже использую сброс CSS там, где я установил margin: 0px, но стили админ-бара переопределяют это.

Итак, как я могу удалить стиль с внешнего интерфейса?

PS. Я знаю, что могу отключить панель администратора для каждого пользователя, но это не то, что я хочу.

Стивен
источник

Ответы:

21
function hide_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');
Максим Крыжановский
источник
1
Ах :) Я тестировал для администратора, когда я попробовал что-то подобное. Забыл про is_blog_admin. Спасибо :)
Стивен
в какой файл это
@HiroProtagonist это можно определить в любом плагине или в functions.php вашей темы.
Максим Крижановский
2
Вы можете немного его укоротить:add_filter( 'show_admin_bar', function (){ return is_blog_admin() });
MiCc83
1
Вы можете сократить его много : add_filter('show_admin_bar', 'is_blog_admin');я предложил изменить , но оно было отклонено. Я полагаю, что два влиятельных рецензента посчитали это слишком большим изменением, даже не осознавая, что оно абсолютно одинаково.
Уолф
5

Если вы хотите удалить админ-панель (панель инструментов) И ударный 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)

jjeaton
источник
1

Я бы сделал что-то вроде этого:

Удалить админ-бар / CSS в голове / класс тела

show_admin_bar(false);

или, если вы просто хотите: удалить htmlCSS на полях<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

l2aelba
источник
0

Мне недавно пришлось это сделать, я просто хотел удалить встроенные стили CSS для WordPress по умолчанию (для панели администратора), но я хотел, чтобы панель администратора оставалась. Я отображал панель администратора внизу страницы, а не сверху.

Вот что избавило меня от введения стилей из функции _admin_bar_bump_cb. Я добавил следующее в мои functions.php

// remove wordpress trying to style the admin bar with inline css
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' );
andxyz
источник