Индивидуальные настройки административной части WordPress (часть 2)

Несколько примеров кодов, скрывающих виджеты, разделы и навигацию в административной части блога.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

Логотип на странице входа

Чтобы сменить стандартный логотип на странице входа на свой, нужно добавить в файл functions.php:

function my_custom_login_logo(){
	echo '
	h1 a { background-image:url('.get_bloginfo('template_directory').'/images/custom-login-logo.jpg) !important; }
	';
}
add_action('login_head', 'my_custom_login_logo');

custom-login-logo.jpg – это ваш логотип

Логотип в административной части

Чтобы изменить логотип, отображаемый в верхнем левом углу административной части, добавьте в functions.php:

function my_custom_logo(){
	echo '
	#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-admon-logo.jpg) !important; }
	';
}
add_action('admin_head', 'my_custom_logo');

custom-admon-logo.jpg – это ваш логотип для административной части блога

Изменение ссылки входа

Чтобы упростить ссылку на страницу входа, а так же защитить страницу блога от атак автоматических скриптов, можно эту ссылку изменить, сделав более человеческой. Для этого вставьте в файл .htaccess, находящемся в корне сайта:

RewriteRule ^login$ http://вашсайт.ru/wp-login.php [NC,L]

вашсайт.ru – это домен вашего сайта

В файл functions.php нужно добавить:

/* перенаправление (редирект) с login на /wp-login.php  и с admin на /wp-admin */
add_action('template_redirect', 'custom_login_redirect');
function custom_login_redirect(){
	if( strpos($_SERVER['REQUEST_URI'], 'login')!==false )
		$loc = '/wp-login.php';
	elseif( strpos($_SERVER['REQUEST_URI'], 'admin')!==false )
		$loc = '/wp-admin/';
	if( $loc ){
		header( 'Location: '.get_option('site_url').$loc, true, 303 );
		exit;
	}
}

Отключение показа ошибок PHP

Для работающих в блоге вовсе не обязательно видеть, какие ошибки возникают. А вот администратору будут интересны сообщения о возникающих ошибках. Поэтому есть смысл скрыть сообщения об ошибках от всех, и показывать их только администратору. Для этого достаточно вставить в functions.php:

add_action('init', 'enable_errors');
function enable_errors(){
	if( $GLOBALS['user_level'] < 5 )
		return;
	error_reporting(E_ALL ^ E_NOTICE);
	ini_set("display_errors", 1);
}

Отключение пунктов меню

Навигационное меню административной части содержит множество пунктов, которые могут и не потребоваться в повседневной работе. Те пункты, которые вы считаете не нужными, можно скрыть, добавив в functions.php следующий код:

function remove_menus(){
	global $menu;
	$restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));
	end ($menu);
	while (prev($menu)){
		$value = explode(' ', $menu[key($menu)][0]);
		if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
	}
}
add_action('admin_menu', 'remove_menus');

Обратите внимание на третью строчку – в ней перечисляются пункты, которые будут скрыты. Вы можете указать любой из пунктов:

  • __(‘Dashboard’) — Консоль;
  • __(‘Posts’) — Записи
  • __(‘Media’) — Медиафайлы
  • __(‘Links’) — Ссылки (для WordPress 3.4 и более старых версий)
  • __(‘Pages’) — Страницы
  • __(‘Comments’) — Комментарии
  • __(‘Appearance’) — Внешний вид
  • __(‘Tools’) — Инструменты
  • __(‘Users’) — Пользователи
  • __(‘Settings’) — Настройки
  • __(‘Plugins’) — Плагины

Для удаления пунктов меню так же есть специальные функции remove_menu_page() и remove_submenu_page(). Они служат для удаления главных пунктов и подпунктов навигационного меню административной части.

Например, нужно удалить пункт Добавить новый в разделе Плагины. Для этого нужно вставить в файл functions.php:

remove_submenu_page( 'plugins.php', plugin-install.php' );

Или если нужно полностью удалить разделы Плагины и Внешний вид. Для этого нужно добавить в файл functions.php:

remove_menu_page( 'plugins.php' );
remove_menu_page( 'themes.php' );

Следует понимать, что эти настройки не запрещают пользоваться ссылками на разделы, они лишь скрывают их.

Удаление сообщений об обновлениях

Другим не обязательно знать, что нужно обновить какой-нибудь плагин или тему. Поэтому сообщения об обновлениях, которые они увидят в административной части, можно отключить. Для этого нужно добавить в файл functions.php:

if( !current_user_can( 'edit_users' ) ){
    //для WordPress 2.9-
	add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
	add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
	// для WordPress 3.0+
	add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
}

Теперь сообщения об обновлениях будут видеть только администраторы.

Удаление лишних административных виджетов

Если вы считаете, что некоторые виджеты в административной части только отвлекают от работы и занимают место на экране, то их можно отключить. Для этого добавьте в файл functions.php:

function clear_dash(){
	$side = &$GLOBALS['wp_meta_boxes']['dashboard']['side']['core'];
	$normal = &$GLOBALS['wp_meta_boxes']['dashboard']['normal']['core'];

	unset($side['dashboard_quick_press']);          //Быстрая публикация
	unset($side['dashboard_recent_drafts']);        //Последние черновики
	unset($side['dashboard_primary']);              //Блог WordPress
	unset($side['dashboard_secondary']);            //Другие новости WordPress
	unset($normal['dashboard_incoming_links']);     //Входящие ссылки
	unset($normal['dashboard_right_now']);          //Прямо сейчас
	unset($normal['dashboard_recent_comments']);    //Последние комментарии
	unset($normal['dashboard_plugins']);            //Последние плагины
}
add_action('wp_dashboard_setup', 'clear_dash' );

Скрытие виджета произвольных полей

Иногда нужно не давать авторам возможность создавать и изменять произвольные поля при редактировании записей. Чтобы запретить использование произвольных полей, можно скрыть их виджет из редактора. Для этого нужно добавить в файл functions.php:

function customize_meta_boxes(){
	global $current_user;
	get_currentuserinfo();
	if ($current_user->user_level < 6)
	remove_meta_box('postcustom', 'post', 'normal');
}
add_action('admin_init','customize_meta_boxes');

Теперь блок с произвольными полями будет доступен только пользователям с уровнем 6, то есть администраторам. Подробнее об уровнях пользователей и ролях: Роли и уровни пользователей в WordPress.

Так же для настроек видимости пользователями с разными правами тех или иных виджетов, разделов, ссылок внутри административной части блога можно воспользоваться плагином Adminimize.

[info txt=”Читайте так же Индивидуальные настройки административной части WordPress (часть 1).”]
Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. Gen13

    Спасибо. Отличная статья.
    Испробую сегодня на практике

    Ответить
×
WordPress:
прокачай свой сайт!

Скидка на премиум темы и плагины

Успей забрать скидку ⋙