WordPress (Sonny) версии 3.3 вышел совсем недавно. Помню, как полусонный, я скачал новую версию, установил ее, прописал мою базу данных. Красивое новое приветствие, мне понравилось. Затем я начал устанавливать настройки по своему вкусу. Поправил заголовок, сделал постоянные ссылки. Затем я отключил панель администратора. Нажал «Обновить профиль». Круто! Подождите-ка. Панель администратора все еще на месте!? Что за [вырезано цензурой]...!

Почему я не могу избавиться от панели администратора?

В новой версии WordPress разработчики ядра WordPress решили, что Админ-Панель – это неотъемлемая часть Консоли (насколько я это понял). Лично я не считаю его особо полезным. Для меня – это просто уродливый блок вверху страницы только с некоторыми из опций, которые есть в боковом меню. Нет, не то чтобы я яростно ненавидел панель администратора. Просто он мне не нравится.

В предыдущих версиях WordPress можно было просто зайти в профиль пользователя и отключить Панель Администратора (Панель Инструментов), или использовать популярный код в файле functions.php:

add_filter('show_admin_bar', '__return_false');

В версии 3.3 у нас уже нет возможности отключить панель администратора в настройках профиля. Я отдаю должное команде разработчиков ядра WordPress за попытки сделать WordPress проще и доступнее, но, похоже, они что-то упускают в своих размышлениях. Людям нравится иметь выбор, и они не любят, когда какую-то возможность выбора у них отнимают. Особенно, если они этой возможностью пользовались. Так что я быстро нашел решение, как отключить админ-панель.

Отключаем Админ-Панель в Консоли WordPress

Этот код нужно вставить в functions.php, так что давайте, открывайте его в любимом текстовом редакторе.

Сначала давайте пропишем функцию проверки:

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
  }  
  
}

Это поможет нам убедиться, что функции ‘disableAdminBar’ у нас еще нет. Если ее нет, наша функция будет запускаться.

Далее, давайте удалим action, который включает панель администратора.

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 );  
  
  }  
  
}

Теперь код для инициализации функции disableAdminBar:

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 );  
  
  }  
  
}  
  
add_filter('admin_head','remove_admin_bar_style_backend');

ОК, эти действия отключили панель администратора, но у нас все еще остается отступ в 28 px вверху страницы.

Вы можете зайти в файл admin-bar.css и отредактировать код css, чтобы удалить отступ. Вам нужно редактировать следующее свойство css:

body.admin-bar #wpcontent,
body.admin-bar #adminmenu{
padding-top:28px;
}

Вы можете также залезть в файл wp-admin.css и изменить css в нем, но я считаю, что лучше не трогать файлы ядра. Так что я собираюсь переопределить css в функции, которую мы создали. Вот функция, которую мы собираемся использовать, чтобы переопределить css:

function remove_admin_bar_style_backend() {  
  echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';  
}  
  
add_filter('admin_head','remove_admin_bar_style_backend');

Вся функция для отключения панели администратора и переопределения css целиком:

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 );  
  
    function remove_admin_bar_style_backend() {  
      echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';  
    }  
  
    add_filter('admin_head','remove_admin_bar_style_backend');  
  
  }  
  
}  
  
add_filter('admin_head','remove_admin_bar_style_backend');

Теперь этот отступ в 28 px должен исчезнуть.

Это не очень изящный метод, но он работает, в том числе переопределение css таким образом. Если вы когда-нибудь захотите снова включить панель администратора, вам не понадобиться снова менять css ядра.

Отключаем Админ-Панель на сайте

Если вы хотите отключить панель администратора в клиентской части вашего сайта, вы можете зайти в настройки профиля пользователя и убрать отметку из поля «Показывать верхнюю панель при просмотре сайта». Достаточно просто, но если вы хотите отключить панель администратора везде, нам нужно будет добавить немного больше в функцию ‘disableAdminBar’.

Вот действие, которое отключит админ-панель в клиентской части:

remove_action( 'wp_footer', 'wp_admin_bar_render', 1000 );

В нашей функции ‘disableAdminBar’ это будет выглядеть следующим образом:

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 ); // for the admin page  
    remove_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); // for the front end  
  
    function remove_admin_bar_style_backend() {  
      echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';  
    }  
  
    add_filter('admin_head','remove_admin_bar_style_backend');  
  
    }  
  
}  
  
add_filter('admin_head','remove_admin_bar_style_backend');

Админ-Панели больше нет, но есть одна проблема. Теперь у нас есть отступ в 28 px вверху сайта.

Тут есть загвоздка. Этот css жестко прописан в коде <head>, когда выбрана опция «Показывать верхнюю панель при просмотре сайта». Я не выяснил, как удалить css, так что мы переопределим его, как мы делали это для панели администратора, используя следующую функцию:

function remove_admin_bar_style_frontend() {  
  echo '<style type="text/css" media="screen"> 
  html { margin-top: 0px !important; } 
  * html body { margin-top: 0px !important; } 
  </style>';  
}  
  
add_filter('wp_head','remove_admin_bar_style_frontend', 99);

Значение 99 в конце add_filter прописано для того, чтобы убедиться, что css в <head> будет после оригинального жестко прописанного css в <head>.

Вот наша полная функция:

if (!function_exists('disableAdminBar')) {  
  
    function disableAdminBar(){  
  
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 ); // for the admin page  
    remove_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); // for the front end  
  
    function remove_admin_bar_style_backend() {  // css override for the admin page  
      echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';  
    }  
  
    add_filter('admin_head','remove_admin_bar_style_backend');  
  
    function remove_admin_bar_style_frontend() { // css override for the frontend  
      echo '<style type="text/css" media="screen"> 
      html { margin-top: 0px !important; } 
      * html body { margin-top: 0px !important; } 
      </style>';  
    }  
  
    add_filter('wp_head','remove_admin_bar_style_frontend', 99);  
  
  }  
  
}  
  
// add_filter('admin_head','remove_admin_bar_style_backend'); // Original version  
add_action(‘init’,'disableAdminBar’); // New version

Это может быть не самое красивое решение, но как быстрый вариант в данный момент онo подходит.

Источник: WPTuts+.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

3 комментария

сначала новые
по рейтингу сначала новые по хронологии

всё решается одной строкой

add_filter('show_admin_bar', '__return_false');

Неа, в 3.3.1 не решается

Rich_invest

в functions.php куда именно поставить данные комманды я поставил ну админ бар не исчез!