Нещодавно зацікавило мене питання: як сховати елементи меню, віджети та нагадування про нову версію у адмін-панелі WordPress?Іншими словами, як зробити ось таку адмінку :smile: :

empty-dashboard-src

Трохи погугливши вибрав і “зліпив” до купи оптимальні мені сніппети кодів. Більшість знайдених функційх пропонували ще й якість додаткові функції. Проте тут я наведу лише “рафіновані” екземпляри.

Ховаємо меню адмін-панелі

Прибрати все меню у адмінці можна з допомогою такого коду:

function remove_the_dashboard () {
	//отримуємо інформацію про поточного користувача
	global $current_user;
     get_currentuserinfo();
 
     //якщо рівень поточного користувача менший 8, прибираємо меню адмін-панелі
     if ($current_user->user_level < 8) {
		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_init', 'remove_the_dashboard');

Спосіб використання: скопіювати вищенаведений код у файл functions.php; рівень користувача з цифрою 8 означає права доступу Редактора (більше прав має тільки Адмін), тому, при необхідності, змініть цифру на відповідну щодо прав певного користувача.
Пояснення: ми створюємо функцію remove_the_dashboard, яка ховає всі елементи меню адмінки. Користувач бачитиме лише меню “Профіль”.

Одразу зазначу, що цей код ховає меню, але не регулює права доступу. Тож, користувач, який знайомий з WordPress і знає посилання на потрібні сторінки, зможе змінювати контент сайта. Приміром, у даному прикладі Редактор матиме доступ до написання нового допису (для цього достатньо перейти за адресою: http://домен_сайта/wp-admin/post-new.php).

Ховаємо віджети “Майстерні”

function remove_meta_boxes() {
     //отримуємо інформацію про поточного користувача
     global $current_user;
     get_currentuserinfo();
 
     //якщо рівень поточного користувача менший 8, прибираємо віджети "Майстерні"
     if ($current_user->user_level < 8)
		global $wp_meta_boxes;
			unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
			unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
			unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
			unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
			unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
			unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
			unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
			unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
 
}
 
add_action('wp_dashboard_setup','remove_meta_boxes');

Джерело: Dashboard_Widgets_API

Спосіб використання: скопіювати вищенаведений код у файл functions.php.
Пояснення: ми створюємо функцію remove_meta_boxes, яка ховає всі віджети зі сторінки “Майстерня”. Ви можете помітити, що перемінна wp_meta_boxes має кілька значень. Приміром, перше означає місце розташування віджета, друге – колонку, а четверте – назву віджета (id його елемента). Таким чином ми можемо сховати не лише віджети по замовчуванні, а й віджети плагінів. Наприклад, щоб приховати віджет плагіна Bad Link Checker, необхідно до вищенаведеного коду додати стрічку:

unset($wp_meta_boxes['dashboard']['normal']['core']['blc_dashboard_widget']);

Де, blc_dashboard_widget є id елемента div віджета означеного плагіна.

Ховаємо нагадування про нову версію

function remove_update_info() {
     //отримуємо інформацію про поточного користувача
     global $current_user;
     get_currentuserinfo();
 
     //якщо рівень поточного користувача менший 8, прибираємо нагадування про нову версію
     if ($current_user->user_level < 8){
		remove_action ('wp_version_check', 'wp_version_check');
		remove_action ('admin_init', '_maybe_update_core');
		add_filter ('pre_transient_update_core', create_function( '$a', "return null;"));
	}
}
add_action('admin_init', 'remove_update_info');

Спосіб використання: скопіювати вищенаведений код у файл functions.php.
Пояснення: ми створюємо функцію remove_update_info, яка ховає нагадування про нову версію WordPress вгорі адмінки.

Що не можливо зробити з допомогою цих функцій? Я не зміг сховати меню деяких плагінів. Наприклад, плагіна TDO Mini Forms. І, звісно, ними не можливо керувати правами доступу до меню адмінки. Може хто знає, як побороти ці проблеми?

За підтримки:
Предлагаем хороший вывоз мусора. ООО «Юнион-Информ»

Строительного и бытового вывоз мусора, контейнер 40м3. «ЭкоТранс-М»

Магазин “Гранд-Авто-Кузов”: оптовые поставки запчастей для иномарок.