Когда вы разрабатываете сайт для своего клиента, иногда некоторые разделы административной части WordPress нужно скрыть для того, чтобы клиент, например, «ничего не сломал». По сути, если доступ к ним не нужен, почему бы их просто не убрать и не упростить админку для клиента. В сегодняшней статье мы покажем вам как персонифицировать и упростить административную панель WordPress для ваших клиентов.
Шаг 1: Настраиваем ваш плагин
Как обычно, для начала необходимо настроить плагин, прежде чем добавлять в него функционал. Создайте директорию в папке /wp-content/plugins/ с именем devise-simple-admin. Далее, внутри этой директории создайте основной файл PHP для вашего плагина. Для стандартизации давайте назовем его devise-simple-admin.php.
Внутри этого файла мы поместим информацию заголовка плагина:
<?php /* Plugin Name: Devise Simple Admin Plugin URI: http://web-devise.com Description: Hides parts of the WordPress admin to keep it simple. Version: 0.1 Author: Japh Author URI: http://web-devise.com License: GPL2 */ ?>
Мы будем писать этот плагин, используя объектно-ориентированное программирование, поэтому зададим наш класс под заголовком плагина:
<?php class devise_Simple_Admin { function __construct() { // Здесь мы будем добавлять хуки } } $devise_simple_admin = new devise_Simple_Admin(); ?>
Сейчас вы можете зайти в админку WordPress и уже увидеть этот плагин. Также мы сейчас активируем его, а затем вернемся и обновим, когда добавим необходимые функции.
Шаг 2: Скрываем ненужные меню
Давайте предположим, что сайт вашего клиента не использует меню «Ссылки», а также клиенту не нужно видеть ничего в «Инструментах» и «Настройках». Давайте отключим их.
<?php class devise_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' ); } } $devise_simple_admin = new devise_Simple_Admin(); ?>
Шаг 3: Вычищаем виджеты консоли
Наверняка, многие не пользуются как самой консолью, так и некоторыми виджетами в ней, такими как: входящие ссылки, плагины, Блог WordPress, и Другие новости ВП.
Итак, виджеты консоли — это метабоксы, поэтому мы можем использовать следующий код для того, чтобы избавиться от них:
<?php class devise_Simple_Admin { function __construct() { // перехватываем действие 'admin_menu' для нашей функции, чтобы убрать элементы меню add_action( 'admin_menu', array( $this, 'remove_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, и Другие новости ВП" 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'); } } $devise_simple_admin = new devise_Simple_Admin(); ?>
Шаг 4: Упрощаем страницу записей, убирая ненужные колонки
Последний шаг для очищения админки — страница списка записей (для страниц и записей). Если ващ клиент — всего один человек, и сам пишет записи для себя, то зачем ему видеть колонку автора? Давайте сэкономим пространство в админке:
<?php class devise_Simple_Admin { function __construct() { // перехватываем действие 'admin_menu' для нашей функции, чтобы убрать элементы меню add_action( 'admin_menu', array( $this, 'remove_menus' ) ); // перехватываем действие 'admin_menu' для функции удаления виджетов консоли add_action( 'admin_menu', array( $this, 'remove_dashboard_widgets' ) ); // перехватываем фильтры для записей, чтобы убрать колонки add_filter( 'manage_posts_columns', array( $this, 'remove_columns' ) ); add_filter( 'manage_pages_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, и Другие новости ВП" 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; } } $devise_simple_admin = new devise_Simple_Admin(); ?>
Заключение
Эти небольшие изменения помогут вам сделать админку WordPress удобной для вашего клиента. Конечно же, сделать можно намного больше, и эти потребности могут отличаться в зависимости от нужд клиента. Некоторые описанные вещи можно реализовать плагином Minimal Admin.
Если немного пошаманить с кодом, то можно добавить проверку на то, кто находится в админке (администратор, редактор и т.д.) и в зависимости от этого выводить полное/сокращенное меню и прочие элементы.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.