Настройка админ-панели WordPress

В этой статье мы поговорим о том, как полностью убрать админ-панель, или как оставить, но с нужными для нас ссылками.

admin_panel

Каждый пользователь в настройках своего профиля может включить/отключить отображение админ-панели.
В этой статье даются глобальные советы, т.е. все изменения касаются всех пользователей (или исключение только админ).

Полное удаление админ-панели

Вставьте этот код в файл functions.php (лежит в корне активной темы):

 

 

add_filter( 'show_admin_bar', '__return_false' ); ?>
 
<?php function hide_admin_bar_settings() {
?>
<style type="text/css">
.show-admin-bar {
display: none;
}
</style>
<?php
}
 
function disable_admin_bar() {
 add_filter( 'show_admin_bar', '__return_false' );
 add_action( 'admin_print_scripts-profile.php', 
 'hide_admin_bar_settings' );
}
add_action( 'init', 'disable_admin_bar' , 9 );

Удаление админ-панели для всех, кроме админа

function hide_admin_bar_settings() {
?>
<style type="text/css">
.show-admin-bar {
display: none;
}
</style>
<?php
}
 
function disable_admin_bar() {
 if ( !current_user_can("administrator") ) {
 add_filter( 'show_admin_bar', '__return_false' );
 add_action( 'admin_print_scripts-profile.php', 
 'hide_admin_bar_settings' );
 }
}
add_action( 'init', 'disable_admin_bar' , 9 );

Если не хотите играться с кодом, то могу вам порекомендовать плагины.

Плагины

Admin Bar Disabler

Плагин позволяет скрывать полностью панель для всех или определенных ролей пользователей. Скачать

WP Admin Bar Removal

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

Как перенести админ-панель вниз?

Вставьте этот код в файл functions.php (лежит в корне активной темы):

/*
 * Отключение стандартных CSS в HTML-коде
 */
function my_filter_head() {
remove_action('wp_head', '_admin_bar_bump_cb');
}
 
add_action('get_header', 'my_filter_head');
 
/*
 * CSS для прилепления админки к нижнему краю страницы
 */
function true_move_admin_bar() {
echo '
<style type="text/css">
html{margin-bottom:32px !important}
* html body{margin-bottom:32px !important}
#wpadminbar{top:auto !important;bottom:0}
#wpadminbar .menupop .ab-sub-wrapper{bottom:32px;-moz-box-shadow:2px -2px 5px rgba(0,0,0,.2);-webkit-box-shadow:2px -2px 5px rgba(0,0,0,.2);box-shadow:2px -2px 5px rgba(0,0,0,.2)}
@media screen and ( max-width:782px ){
html{margin-bottom:46px !important}
* html body{margin-bottom:46px !important}
#wpadminbar{position:fixed}
#wpadminbar .menupop .ab-sub-wrapper{bottom:46px}
}
</style>
';
}
 
//add_action( 'admin_head', 'true_move_admin_bar' ); // в админке
add_action( 'wp_head', 'true_move_admin_bar' ); // на сайте

Обратите внимание на две последних строки кода.
Первая закомментирована — она опускает админ-панель в админке. Если это надо, то раскомментируйте эту строку.
Вторая — опускает админ-панель на сайте.

Удаление ссылок в админ-панели

Админ-панель можно оставить, но с нужными для нас ссылками.

Например, следующий фрагмент кода удалит ссылки:

  • Название сайта и его меню
  • Комментарии
  • Логотип WordPress и его меню
  • Настроить
  • Добавить
  • Обновление
function my_admin_bar_render() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('comments');
$wp_admin_bar->remove_menu('appearance');
$wp_admin_bar->remove_menu('site-name');
$wp_admin_bar->remove_menu('customize');
$wp_admin_bar->remove_menu('wp-logo');
$wp_admin_bar->remove_menu('new-content');
 $wp_admin_bar->remove_menu('updates');
}
add_action( 'wp_before_admin_bar_render', 'my_admin_bar_render' );

Чтобы удалить ссылку на редактирование текущей записи/страницы добавьте:

$wp_admin_bar->remove_menu('edit');

Отображение админ-панели для всех посетителей

В панели будет отображаться ссылка на страницу авторизации и иконка формы поиска.

Вставьте этот код в файл functions.php (лежит в корне активной темы):

function pjw_login_adminbar( $wp_admin_bar) {
if ( !is_user_logged_in() )
$wp_admin_bar->add_menu( array( 'title' => __( 'Log In' ), 
'href' => wp_login_url() ) );
}
add_action( 'admin_bar_menu', 'pjw_login_adminbar' );
add_filter( 'show_admin_bar', '__return_true' , 1000 );

Иконку поиска также можно скрыть:

if ( !function_exists('hide_admin_bar_search') ) {
function hide_admin_bar_search () { ?>
<style type="text/css">
#wpadminbar #adminbarsearch {
display: none;
}
</style>
<?php
}
add_action('admin_head', 'hide_admin_bar_search');
add_action('wp_head', 'hide_admin_bar_search');
}

Добавление своих ссылок в админ-панель

Одна ссылка:

add_action( 'admin_bar_menu', 'toolbar_link_to_mypage', 999 );

function toolbar_link_to_mypage( $wp_admin_bar ) {
$args = array(
'id' => 'my_page',
'title' => 'Моя страница',
'href' => 'http://mysite.com/my-page/',
'meta' => array( 'class' => 'my-toolbar-page' )
);
$wp_admin_bar->add_node( $args );
}

Укажите свое название вместо Моя страница, и свою ссылку вместо http://mysite.com/my-page/

Добавление группы ссылок в виде выпадающего меню:

add_action( 'admin_bar_menu', 'social_media_links', 900 );
function social_media_links($wp_admin_bar)
{

$args = array(
'id' => 'social_media',
'title'=>'Социальные сети',
'meta' => array( 'class' => 'first-toolbar-group' ),
);
$wp_admin_bar->add_node( $args );


$args = array();

array_push($args,array(
'id'=>'twitter',
'title'=>'Twitter',
'href'=>'http://www.twitter.com',
'parent'=>'social_media',
));


array_push($args,array(
'id' => 'youtube',
'title'=>'YouTube',
'href'=>'http://www.YouTube.com',
'parent' => 'social_media',
'meta' => array( 'class' => 'first-toolbar-group' ),
));

array_push($args,array(
'id'=>'fb',
'title'=>'Facebook',
'href'=>'http://www.facebook.com',
'parent'=>'social_media',
));

sort($args);
for($a=0;$a<sizeOf($args);$a++)
{
$wp_admin_bar->add_node($args[$a]);
}



}

Ссылка на добавление новой записи:

add_action( 'admin_bar_menu', 'make_parent_node', 999 );

function make_parent_node( $wp_admin_bar ) {
$args = array(
'id' => 'new-post', // id of the existing child node (New > Post)
'title' => 'Новая запись', // alter the title of existing node
'parent' => false, // set parent to false to make it a top level (parent) node
);
$wp_admin_bar->add_node( $args );
}

Напишите в комментариях, что еще можно сделать с админ-панелью.