/    /  Комментариев нет


При разработке сайтов на Wordpress иногда возникает необходимость ограничить доступ клиента к некоторым разделам панели управления, а раз так, то почему бы не упростить административное меню, убрав из него всё лишнее? И вот как это делается…


Специалисты по созданию и продвижению сайтов в colorflicks выработали правило — всегда предоставлять оптимальные решения для своих клиентов. Это касается и административной части wordpress. Зачем клиенту лишняя информация?

Шаг 1. Установка и настройка плагина

Как обычно всё начинается с установки нового плагина. Зайдите в директорию ‘/wp-content/plugins/’ и создайте там папку под названием ‘simple-admin’. После этого создайте в ней новый PHP-файл с именем ‘simple-admin.php’. В самом начале файла разместите заголовок плагина:

<?php
/*
Plugin Name: Simple Admin
Plugin URI: http://tutsday.ru/wordpress/uproshhaem-administrativnuyu-panel-dlya-vashih-klientov/?preview=true&preview_id=509&preview_nonce=eac52acff0
Description: Упрощение административной панели
Version: 0.1
Author: Japh
License: GPL2
*/
?>

Мы напишем этот плагин с помощью объектно-ориентированного программирования, поэтому сразу под заголовком разместите следующее:

<?php
class Simple_Admin {

    function __construct() {
        // Здесь мы добавим хуки...
    }

}

$simple_admin = new Simple_Admin();
?>

Уже на данном этапе вы можете активировать плагин, зайдя в консоль вашего сайта.


Шаг 2. Скрываем пункты меню

Предположим, что вашим клиентам нет необходимости использовать раздел «Ссылки», «Инструменты» и «Настройки» (в конце концов, крутить настройки это ваша работа, не так ли?). Давайте скроем их из меню. Для этого код плагина должен выглядеть так:

<?php
class Simple_Admin {

    function __construct() {
        // Хук для 'admin_menu', удаляем пункты меню
        add_action( 'admin_menu', array( $this, 'hide_menus' ) );
    }

    // Эта функция удаляет пункты меню, используя Page Hook Suffix ( http://codex.wordpress.org/Administration_Menus#Page_Hook_Suffix )
    function hide_menus() {
        // Ссылки
        remove_menu_page( 'link-manager.php' );
        // Инструменты
        remove_menu_page( 'tools.php' );
        // Настройки
        remove_menu_page( 'options-general.php' );
    }

}

$simple_admin = new Simple_Admin();
?>

Шаг 3. Убираем виджеты из консоли

Не знаю как вы, но я уже давно заметил в панели управления WordPress несколько совершенно ненужных мне, и уж тем более моим клиентам, виджетов, а именно: ‘Входщий ссылки’, ‘Плагины’, ‘Блог WordPress’ и ‘Другие новости WordPress’. Многие могут сказать, что ‘Входщие ссылки‘ это очень полезный и мощный инструмент, однако я предпочитаю скрыть его.

Немного доработав наш плагин, мы легко и просто избавляемся от этих виджетов:

<?php
class Simple_Admin {

    function __construct() {
        // Хук для 'admin_menu', удаляем пункты меню
        add_action( 'admin_menu', array( $this, 'hide_menus' ) );
        // Хук для 'admin_menu', удаляем виджеты из консоли
        add_action( 'admin_menu', array( $this, 'remove_dashboard_widgets' ) );
    }

    // Эта функция удаляет пункты меню, используя Page Hook Suffix ( http://codex.wordpress.org/Administration_Menus#Page_Hook_Suffix )
    function hide_menus() {
        // Ссылки
        remove_menu_page( 'link-manager.php' );
        // Инструменты
        remove_menu_page( 'tools.php' );
        // Настройки
        remove_menu_page( 'options-general.php' );
    }

    // Эта функция удаляет виджеты
    function remove_dashboard_widgets() {
        // Удаляем перечисленные виджеты: Входящие ссылки, Плагины, Блог WordPress и Другие новости WordPress
        remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');
        remove_meta_box('dashboard_plugins', 'dashboard', 'core');
        remove_meta_box('dashboard_primary', 'dashboard', 'core');
        remove_meta_box('dashboard_secondary', 'dashboard', 'core');
    }

}

$simple_admin = new Simple_Admin();
?>

Шаг 4. Скрываем колонки из списков с постами

Представим, что наполнением сайта занимается один единственный человек. Тогда зачем в списке записей ему видеть колонку ‘Автор‘? По мне так это лишняя информация, которая только занимает место.

Допишем ещё несколько строк, которые скроют эту колонку, и получим окончательный код плагина:

<?php
class Simple_Admin {

    function __construct() {
        // Активируем функцию удаления пунктов меню с помощью хука для 'admin_menu'
        add_action( 'admin_menu', array( $this, 'hide_menus' ) );
        // Хук для 'admin_menu', удаляем виджеты из консоли
        add_action( 'admin_menu', array( $this, 'remove_dashboard_widgets' ) );
		// Хук для записей и постов, удаляем ненужные колонки
		add_filter( 'manage_pages_columns', array( $this, 'remove_columns' ) );
		add_filter( 'manage_posts_columns', array( $this, 'remove_columns' ) );
    }

    // Эта функция удаляет пункты меню, используя Page Hook Suffix ( http://codex.wordpress.org/Administration_Menus#Page_Hook_Suffix )
    function hide_menus() {
        // Ссылки
        remove_menu_page( 'link-manager.php' );
        // Инструменты
        remove_menu_page( 'tools.php' );
        // Настройки
        remove_menu_page( 'options-general.php' );
    }

    // Эта функция удаляет виджеты
    function remove_dashboard_widgets() {
        // Удаляем перечисленные виджеты: Входящие ссылки, Плагины, Блог WordPress и Другие новости WordPress
        remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');
        remove_meta_box('dashboard_plugins', 'dashboard', 'core');
        remove_meta_box('dashboard_primary', 'dashboard', 'core');
        remove_meta_box('dashboard_secondary', 'dashboard', 'core');
    }

	// Эта функция удаляет перечисленные колонки из списка с записями / страницами.
	// В нашем случае — удаляем колонку Автор
    function remove_columns( $defaults ) {
        unset( $defaults['author'] );
        return $defaults;
    }

}

$simple_admin = new Simple_Admin();
?>

Заключение

Подобные небольшие изменения позволяют сделать административную панель WordPress чуточку проще для ваших клиентов, ведь теперь им не придётся путаться среди множества ненужных им меню и виджетов.

Так же вы можете пойти дальше и добавить возможность включения / отключения тех или иных пунктов меню, виджетов и т.д., основываясь на том, кто из пользлвателей вошёл в систему.

А каким образом вы упрощаете консоль WordPress для своих клиентов?


Теги: