Операція: “Чиста адмінка”

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

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. «ЭкоТранс-М»

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

Теги:
10 прикладів інновативних макетів у веб-дизайні

10 прикладів інновативних макетів у веб-дизайні

Цікавий факт

Цікавий факт

Новіший допис

There are 13 comments

  1. Юрко Червоний

    Відключення показу інформації про оновлення корисна штука! Я показ оновлення відключаю радикально. У файлі wp-version.php прописую нову, вищу версію WP, наприклад, 13.

        1. Psiho

          Я думаю, що це не дуже корисно в плані SEO. Краще я напишу унікальний гостьовий пост. До речі, це гарна ідея! 🙂

  2. Роман

    О, дякую. Виручили. А то вже задовбало це “оновіть вордпрес”.
    Самий кращий спосіб вписати більший номер.
    Без додаткової мороки з кодом.

    Підкажіть, може хто знає. Мені треба зробити коротки пост і довгий.
    Як у Вас.

    “короткий текст
    Читати далі » “

    1. Psiho

      Роман, для цього слід використовувати тег

      . Якщо ж ви хочете, щоб на, приміром, головній сторінці всі пости автоматично були витягами, то варто скористатись замість the_content() тегом the_excerpt(). Тоді тег more ставити не потрібно, ВордПрес автоматично виводитиме скорочені записи.

      Детальніше про дану кастомізацію тут.

  3. Юрко Червоний

    Інші лінки можна прибрати за допомогою плаґіну Role Manager, також це забере права доступу.

    А є зе плаґіни які вимикають перевірку оновлень. Я їх використовую тоді, коли немає доступу до фтп, а треба «приглушити» оновлення.

    1. Psiho

      Ні, часто Role Manager “не бачить” нових пунктів меню, що створені плагінами. Відповідно, вдіяти з ними нічого не може. І якщо права доступу інколи можна налаштувати у певному плагіні, то те, чи показувати пункт меню цього плагіна, в залежності від ролі користувача – ні.

      Вимикають перевірку оновлень чого?

Коментування вимкнено.