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

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

19.01.2010 15:54 11 comments

Нещодавно зацікавило мене питання: як сховати елементи меню, віджети та нагадування про нову версію у адмін-панелі 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. «ЭкоТранс-М»

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

Multilingual WordPress

11 Коментарів

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

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

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

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

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

      <!--more-->

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

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

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

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

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

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

  • На одному сайті я використав такі коди, але вони вилізли боком при додаванні віджетів. Десь щось не так чи що там. Тому я використав плаґін http://wordpress.org/extend/plugins/adminimize/

Залишити відгук


:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

Повідомляти мене про нові коментарі на e-mail. Ви також можете підписатись не коментуючи.