Настройка админ-панели 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'  => 'https://mysite.com/my-page/',
		'meta'  => array( 'class' => 'my-toolbar-page' )
	);
	$wp_admin_bar->add_node( $args );
}

Укажите свое название вместо Моя страница, и свою ссылку вместо https://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'		=>	'https://www.twitter.com',
				'parent'	=>	'social_media',
			));
			

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

			array_push($args,array(
				'id'		=>	'fb',
				'title'		=>	'Facebook',
				'href'		=>	'https://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 );
}

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