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

Содержание:

  1. удаление главных пунктов меню;
  2. удаление вложенных пунктов меню;
  3. произвольная сортировка пунктов меню;
  4. отключение редактора.
  5. отключение редактора на определённых страницах.
Меню WordPress

Удаление пунктов меню верхнего уровня - remove_menu_page()

Чтобы скрыть необходимый пункт меню в админке, добавьте следующий код в functions.php.

add_action('admin_menu', 'remove_menus');
function remove_menus() {
    remove_menu_page('index.php');                # Консоль

    remove_menu_page('edit.php');                 # Записи

    remove_menu_page('edit-comments.php');        # Комментарии

    remove_menu_page('edit.php?post_type=page');  # Страницы

    remove_menu_page('upload.php');               # Медиафайлы

    remove_menu_page('themes.php');               # Внешний вид

    remove_menu_page('plugins.php');              # Плагины

    remove_menu_page('users.php');                # Пользователи

    remove_menu_page('tools.php');                # Инструменты

    remove_menu_page('options-general.php');      # Параметры

    remove_menu_page('edit.php?post_type=acf-field-group'); # ACF

}

Если вам необходимо скрыть ещё какие-то пункты меню, которые не были указаны, то можете вывести их названия с помощью следующего кода.

function debug_admin_menus()
{
    global $menu, $pagenow;
    if ($pagenow == 'index.php') { // выводим только в «Консоли»

        foreach ($menu as $menu_item) {
            echo "remove_menu_page('$menu_item[2]');<br>";
        }
    }
}
add_action('admin_notices', 'debug_admin_menus');

Удаление подпунктов меню - remove_submenu_page()

Для удаления будем использовать функцию:

remove_submenu_page($menu_slug, $submenu_slug);
  • $menu_slug - ключ массива;
  • $submenu_slug - элемент под индексом 2.

Для получения данных о меню, воспользуйтесь функцией debug_admin_menus().

function debug_admin_menus()
{
    global $submenu, $pagenow;
    if ($pagenow == 'index.php') {
        echo '<pre>' . print_r($submenu, true) . '</pre>';
    }
}
add_action('admin_notices', 'debug_admin_menus');

Несколько примеров:

add_action('admin_menu', 'remove_menus', 99999);
function remove_menus()
{
    remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag'); # «Записи» - «Метки»

    remove_submenu_page('themes.php', 'theme-editor.php');              # «Внешний вид» - «Редактор тем»

    remove_submenu_page('woocommerce', 'wc-admin');                     # «WooCommerce» - «Главная»

}

Как изменить порядок пунктов меню в админке WordPress

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

if (is_admin()) {
    add_filter('custom_menu_order', '__return_true'); # включаем ручную сортировку

    add_filter('menu_order', 'custom_menu_order'); # ручная сортировка

    function custom_menu_order($menu_order) {
        if ( ! $menu_order ) return true;
        return array(
            'index.php',                      # Консоль


            'edit.php',                       # Записи

            'edit-comments.php',              # Комментарии


            'separator1',                     # ~ Отступ ~


            'edit.php?post_type=page',        # Страницы

            'edit.php?post_type=services',    # Услуги

            'edit.php?post_type=doctors',     # Врачи

            'edit.php?post_type=reviews',     # Отзывы

            'edit.php?post_type=sertificate', # Сертификаты

            'edit.php?post_type=stocks',      # Акции

            'edit.php?post_type=works',       # Работы клиники


            'separator1',                     # ~ Отступ ~


            'upload.php',                     # Медиафайлы

            'themes.php',                     # Внешний вид

            'plugins.php',                    # Плагины

            'users.php',                      # Пользователи

            'tools.php',                      # Инструменты

            'options-general.php',            # Настройки

        );
    }
}

Как отключить редактор WordPress

Редактор WordPress

Для отключения редактора WordPress на всех страницах воспользуемся функцией remove_post_type_support.

function disable_content_editor(){ 
    remove_post_type_support('page', 'editor');
}
add_action('admin_init', 'disable_content_editor');

Для всех статей отключение редактора будет выглядеть следующим образом.

function disable_content_editor(){ 
    remove_post_type_support('post', 'editor');
}
add_action('admin_init', 'disable_content_editor');

Отключить редактор WordPress на определённых страницах

Отключим редактор WordPress на страницах с определённым шаблоном.

add_action('admin_init', 'hide_editor');
function hide_editor()
{
    // Получаем id записи

    if (isset($_GET['post'])) $post_id = $_GET['post'];
    else $post_id = $_POST['post_ID'];

    if (!isset($post_id) || empty($post_id)) return;

    // Получаем название шаблона страницы

    $template_file = get_post_meta($post_id, '_wp_page_template', true);

    if ( // Названия шаблонов

        $template_file == 'index.php' ||
        $template_file == 'page-about.php' ||
        $template_file == 'page-projects.php' ||
        $template_file == 'page-join.php'
    ) {
        remove_post_type_support('page', 'editor');
    }
}
Админ admin