Как удалить элементы меню администратора WordPress программно без плагина

Опубликовано: 2020-01-20

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

Один из самых простых способов удалить элементы меню администратора WordPress — использовать бесплатно доступные плагины, которые могут скрывать элементы меню администратора по роли пользователя или условно.

Когда не следует удалять элементы меню администратора WordPress с помощью плагина

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

Риск сторонних плагинов

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

Постоянные обновления

Еще одна причина для программного удаления элементов меню администратора WordPress — это постоянные обновления, которые вы получаете во всех устанавливаемых вами плагинах WordPress.

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

Несколько меню администратора плагина

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

В этом посте я покажу, как удалить пункты меню WordPress без использования плагина. Чтобы реализовать это на своем сайте WordPress, вам понадобится небольшой опыт редактирования сайтов WordPress, особенно добавления фрагментов кода в файл темы functions.php.

Удалить элементы меню администратора WordPress программно

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

  1. Войдите на свой сайт WordPress и укажите элементы меню администратора, которые вы хотите удалить.
  2. Создайте хук действия, который перехватывает событие admin_menu с функцией обратного вызова , которая имеет логику для удаления меню администратора WordPress с вашей панели.
  3. Функция обратного вызова должна использовать функции WordPress remove_menu_page или remove_submenu_page() для удаления каждого из целевых пунктов меню администратора. Например, вы можете удалить меню виджетов из меню тем, используя этот код remove_submenu_page( 'themes.php', 'widgets.php'); или удалить главное меню дашборда с помощью этого кода — remove_menu_page('index.php');
  4. Кроме того, вы можете использовать php-функцию unset() и получить доступ к значениям глобального массива подменю, чтобы удалить каждый из целевых пунктов меню администратора WordPress.
  5. Добавьте этот фрагмент кода в файл functions.php темы и обновите изменения. Это позволит успешно удалить элементы меню администратора WordPress без использования плагина.
  6. Вы также можете добавить этот код в функцию в своем пользовательском плагине, и он будет работать так же, как и в теме functions.php.

Как удалить меню администратора WordPress без плагина

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

Идентификация элементов меню администратора Slug

Войдите в свою панель управления WordPress и проверьте элементы меню администратора, которые вы хотите удалить. Как вы можете видеть в этом примере, главное меню панели инструментов имеет слаг index.php .

Этот slug важен, так как это один из параметров, которые вы добавляете в функцию remove_submenu_page(), как я скоро продемонстрирую.

удалить меню администратора вордпресс

Поймите, как удалить страницу и удалить функции страницы подменю.

Удалить функцию страницы

Функция remove_menu_page имеет только один параметр — ярлык страницы, и она удаляет меню администратора верхнего уровня. Параметр представляет собой строку, поскольку слаг страницы, очевидно, является строкой, и общий код должен быть следующим:

 remove_menu_page(строка;$menu_slug;)

Удалить функцию подстраницы

Функция remove_submenu_page поставляется с двумя параметрами, первый из которых является ярлыком родительского меню, когда вы удаляете подменю, а второй — ярлыком подменю, которое вы хотите удалить. Общий код должен быть следующим:

 remove_submenu_page (строка $menu_slug, строка $submenu_slug)

Создайте хук действия для удаления меню администратора и/или пунктов подменю

Ниже приведен пример хука действия, который перехватывает событие admin_menu и имеет функцию обратного вызова, которую мы назвали « remove_admin_menu_items».

 add_action('admin_menu', 'remove_admin_menu_items', 999);

Создайте функцию обратного вызова для удаления меню администратора и/или элементов подменю с помощью remove_submenu_page и remove_menu_page ()

Во-первых, в функции обратного вызова вам нужно получить массив глобальных меню с глобальной переменной $submenu, если вы будете использовать функцию unset() .

Во-вторых, вы добавляете функцию remove_submenu_page или remove_menu_page(), нацеленную на страницу, которую вы хотите удалить, как показано в коде ниже:

 функция remove_admin_menu_items() {        

    remove_submenu_page('menu_slug', 'submenu_slug'); 

}

Или, используя unset, вы можете иметь следующую функцию обратного вызова

 функция remove_admin_menu_items() {

        глобальное $подменю; 

       unset($submenu['слаг родительского меню'][индекс массива подменю элемента администратора]);

 }

Пример того, как удалить пункт меню администратора обновлений

Когда вы входите в свою панель управления WordPress, появляется пункт меню об обновлениях, который находится в главном меню панели инструментов, как показано на изображении ниже:

удалить меню администратора вордпресс

Я покажу, как вы можете удалить этот пункт меню администратора, используя метод, описанный выше. Во-первых, слаг родительского меню — index.php , а слаг для меню обновлений — update-core.php.

Удалить родительский пункт меню администратора WordPress и подменю

Таким образом, вы можете создать хук действия и функцию обратного вызова для удаления всего пункта меню с помощью функции remove_menu_page() следующим образом:

 // Удаляем пункт главного меню вместе с подстраницами /submenus

add_action('admin_menu', 'remove_admin_menu_items', 999);

 функция remove_admin_menu_items() {

    remove_menu_page('index.php');


 }

Это удалит все меню и подменю, как показано на изображении ниже:

Удалить только элементы подменю WordPress

Удалить только элементы подменю WordPress

Вы можете создать хук действия и функцию обратного вызова для удаления элемента подменю с помощью функции remove_submenu_page следующим образом:

 //Удалить подстраницы или подменю

add_action('admin_menu', 'remove_admin_menu_items', 999);

функция remove_admin_menu_items() {

    remove_submenu_page('index.php','update-core.php');

}

Это удалит подменю, указанное во втором параметре функции remove_submenu_page, в данном случае мы указали как « update-core.php», и результат показан на изображении ниже:

Использование PHP-функции Unset()

Мы также можем использовать функцию unset PHP для удаления элементов подменю, и в этом случае нам нужно сначала получить доступ к глобальному массиву $submenu, как показано в коде ниже:

 // добавляем хук действия в событие admin_menu

add_action('admin_menu', 'remove_admin_menu_items', 999);

//функция обратного вызова
функция remove_admin_menu_items() {

    // Массив меню администратора-> Список всех элементов меню администратора WordPress в этом массиве
    глобальное $подменю;

    //выводим массив на экран, чтобы мы могли видеть пункты меню администратора по индексу
    
     печать('<предварительно>');
     print_r ($ подменю);
     печать('<предварительно>');

      // убираем все остальное отображаемое на экране, чтобы был виден только массив элементов меню администратора
      умри();

}

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

В этом коде вы можете увидеть использование тегов pre и функции die() для отображения кода в удобочитаемом формате.

Использование PHP-функции Unset() wordpress

Удалить элемент меню подменю WordPress с помощью Unset

Таким образом, индекс массива для подменю update-core равен 10 . Итак, мы можем продолжить и использовать функцию unset() следующим образом:

 // Удаляем пункт главного меню вместе с подстраницами с помощью unset

add_action('admin_menu', 'remove_admin_menu_items', 999);

функция remove_admin_menu_items() {

    глобальное $подменю;

       сбросить ($ подменю ['index.php'] [0]); //удалить меню верхнего уровня index.php (меню панели управления - главное меню)
      unset($submenu['index.php'][10]); // убираем подменю update-core.php (меню обновлений)


}

Результаты будут такими же, как при использовании функции WordPress remove_submenu_page.

Удалить элемент меню администратора WordPress с помощью Unset

Мы также можем удалить страницу верхнего уровня и подменю вместе, используя функцию unset, нацеленную на каждую из этих страниц:

Удалить элемент меню администратора WordPress с помощью Unset

Код должен быть следующим:

 //. Удалить главный пункт подменю с помощью unset

add_action('admin_menu', 'remove_admin_menu_items', 999);

функция remove_admin_menu_items() {

   глобальное $подменю;

   unset($submenu['index.php'][10]);


}

Результатом будет удаление любой из страниц, поскольку мы отключили их в коде:

Как удалить пункты меню администратора WordPress программно без плагина

Подведение итогов

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