Статьи

Как сделать WordPress проще, удаляя виджеты, мета-боксы и опции

В моем предыдущем посте мы создали новый плагин WordPress, который упростил панели администрирования для ваших клиентов. Если вы еще не прочитали это, пожалуйста, сделайте это сначала. В этой статье мы будем использовать тот же файл плагина для более глубоких изменений конфигурации.

Удалить уведомление об обновлении WordPress

WordPress информирует вас о появлении обновлений. К сожалению, это говорит всем — включая ваших клиентов. Это может привести к ненужной озабоченности или соблазнить вас звонить вам каждые полчаса, пока он не обновится.

Добавьте следующий код в easy-admin.php, чтобы удалить уведомление для всех, кроме администраторов WordPress:

function no_update_notification() { if (!current_user_can('activate_plugins')) remove_action('admin_notices', 'update_nag', 3); } add_action('admin_notices', 'no_update_notification', 1); 

Удалить ненужные виджеты панели инструментов

Вы можете удалить виджеты инструментальной панели для пользователя, выполнив вход в систему и сняв флажки с элементов в раскрывающейся панели «Параметры экрана». Однако это может оказаться непрактичным, и ничто не помешает вашему клиенту повторно включить их.

Добавьте следующую функцию к easy-admin.php, чтобы удалить ненужные виджеты панели мониторинга. Вам может потребоваться добавить, удалить или изменить неустановленные команды по мере необходимости. Например, первый раздел (строки 5-7) удаляет «Прямо сейчас» для всех, кроме администраторов WordPress. Второй раздел (строки 9-13) удаляет виджеты независимо от прав пользователя.

Идентификатор виджета панели мониторинга присваивается его элементу div — используйте Firebug или проверьте источник, чтобы найти это значение.

 // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); не // remove unnecessary dashboard widgets function remove_dashboard_widgets(){ global $wp_meta_boxes; // do not remove "Right Now" for administrators if (!current_user_can('activate_plugins')) { unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } // remove widgets for everyone unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); 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']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); 

Удалить ненужную страницу и разместить мета-боксы

Немногие разработчики используют все возможности, которые предлагает WordPress. Например, если все сообщения относятся к одной категории по умолчанию, вам не нужно поле Категории. Или, возможно, вы не разрешаете комментарии и можете удалить соответствующие поля.

Добавьте следующую функцию к easy-admin.php, чтобы удалить ненужные мета-блоки с панелей сообщений и страниц. Возможно, вам придется добавить или удалить вызовы remove_meta_box () в этой функции. Первый аргумент — это идентификатор, назначенный элементу div блока — опять же, это можно обнаружить в источнике или с помощью Firebug.

 // remove unnecessary page/post meta boxes function remove_meta_boxes() { // posts remove_meta_box('postcustom','post','normal'); remove_meta_box('trackbacksdiv','post','normal'); remove_meta_box('commentstatusdiv','post','normal'); remove_meta_box('commentsdiv','post','normal'); remove_meta_box('categorydiv','post','normal'); remove_meta_box('tagsdiv-post_tag','post','normal'); remove_meta_box('slugdiv','post','normal'); remove_meta_box('authordiv','post','normal'); // pages remove_meta_box('postcustom','page','normal'); remove_meta_box('commentstatusdiv','page','normal'); remove_meta_box('trackbacksdiv','page','normal'); remove_meta_box('commentsdiv','page','normal'); remove_meta_box('slugdiv','page','normal'); remove_meta_box('authordiv','page','normal'); } add_action('admin_init','remove_meta_boxes'); 

Удалить избранные действия

Кнопка избранных действий находится в заголовке WordPress рядом с сообщением «Привет». Обычно он предоставляет быстрые ссылки на «Новое сообщение», «Черновики», «Новая страница», «Загрузка» и, возможно, несколько опций, специфичных для плагинов, таких как «Пустой кэш». Давайте удалим опции, которые нам не нужны, добавив следующий код в easy-admin.php:

 // remove favorite actions function remove_favorite_actions($actions) { if (!current_user_can('activate_plugins')) { unset($actions['edit-comments.php']); } return $actions; } add_filter('favorite_actions', 'remove_favorite_actions'); с // remove favorite actions function remove_favorite_actions($actions) { if (!current_user_can('activate_plugins')) { unset($actions['edit-comments.php']); } return $actions; } add_filter('favorite_actions', 'remove_favorite_actions'); 

В этом примере мы удалили ссылку Комментарии для всех, кроме администраторов. Чтобы удалить другие элементы, вам нужно найти URL-адрес действия в источнике страницы. Найдите элемент с идентификатором «favour-actions» и внутри него элемент с идентификатором «favour-inside». Дочерние элементы содержат ссылки на URL-адреса, такие как «media-new.php». Чтобы удалить эту опцию, просто добавьте unset($actions['media-new.php']); к функции.

Уф. В моем следующем посте WordPress мы рассмотрим меню WordPress и удалим все опасные опции, которые вы хотите скрыть от клиентов.