Как удалить все виджеты с панели управления?

Вопрос или проблема

Я ищу совершенно пустую панель управления. Без виджетов и предпочтительно с одним столбцом.

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

Не пустая панель управления WordPress

Из этого вопроса и ответа я узнал о глобальной переменной $wp_meta_boxes. Там же есть код для удаления стандартных мета-боксов.

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

add_action('wp_dashboard_setup', 'wpse_73561_remove_all_dashboard_meta_boxes', 9999 );

function wpse_73561_remove_all_dashboard_meta_boxes()
{
    global $wp_meta_boxes;
    $wp_meta_boxes['dashboard']['normal']['core'] = array();
    $wp_meta_boxes['dashboard']['side']['core'] = array();
}

Ответ для заставить один столбец в параметрах экрана отсюда:

add_filter( 'get_user_option_screen_layout_dashboard', 'wpse_4552_one_column_layout' );

function wpse_4552_one_column_layout( $cols ) {
    if( current_user_can( 'basic_contributor' ) )
        return 1;
    return $cols;
}

Этот вопрос предоставил код для скрытия вкладок Параметры экрана и Помощь:

add_filter( 'contextual_help', 'wpse_25034_remove_dashboard_help_tab', 999, 3 );
add_filter( 'screen_options_show_screen', 'wpse_25034_remove_help_tab' );

function wpse_25034_remove_dashboard_help_tab( $old_help, $screen_id, $screen )
{
    if( 'dashboard' != $screen->base )
        return $old_help;

    $screen->remove_help_tabs();
    return $old_help;
}

function wpse_25034_remove_help_tab( $visible )
{
    global $current_screen;
    if( 'dashboard' == $current_screen->base )
        return false;
    return $visible;
}

Теперь на панели управления почти ничего нет, что дальше?

Немного CSS, чтобы скрыть icon-index и H2 title, и jQuery, чтобы заполнить пустое место:

add_action( 'admin_head-index.php', 'wpse_73561_dashboard_scripts' );

function wpse_73561_dashboard_scripts() {
    ?>
        <style>#icon-index, .wrap h2 {display:none}</style>
        <script language="javascript" type="text/javascript">
            jQuery(document).ready(function($) {
                fillTheVoid(); // скоро на StackOverflow 
            });
        </script>   
    <?php
}

[ обновление ]

Заполненное пустое место можно найти на StackOverflow.
Используйте эту функцию wpse_73561_dashboard_scripts вместо этой.

Это будет работать нормально

add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );
function remove_dashboard_widgets() {

    global $wp_meta_boxes;
    unset($wp_meta_boxes['dashboard']);

}

Удаление стандартных мета-боксов WordPress на панели управления:

@source https://github.com/vincentorback/clean-wordpress-admin/blob/master/dashboard.php

/**
 * Удаление виджетов панели управления.
 *
 * @link https://developer.wordpress.org/reference/functions/remove_meta_box/
 */
add_action(
    'wp_dashboard_setup',
    function () {
        // Удаление панели 'Приветствия'
        remove_action( 'welcome_panel', 'wp_welcome_panel' );

        // Удаление метабокса 'Здоровье сайта'
        remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' );

        // Удаление метабокса 'На первый взгляд'
        remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );

        // Удаление метабокса 'Активность'
        remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );

        // Удаление метабокса 'Новости WordPress'
        remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );

        // Удаление метабокса 'Быстрая черновик'
        remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
    }
);

Удаление всех мета-боксов WordPress на панели управления (для всех плагинов):

@source: неизвестно

add_action('wp_dashboard_setup', 'kdev_remove_dw', 999 );
function kdev_remove_dw() {
    global $wp_meta_boxes;
    $wp_meta_boxes = array();
}

Если вы хотите скрыть все виджеты панели, кроме ваших собственных:

Измените приоритеты действий, чтобы сначала очистить все их, а затем добавить свои собственные:

//Удаление всех виджетов административной панели
add_action('wp_dashboard_setup', 'remove_all_dashboard_widgets', 100 );
function remove_all_dashboard_widgets() {

    global $wp_meta_boxes;
    $wp_meta_boxes = [];

}

//Добавление своих виджетов
add_action('wp_dashboard_setup', 'my_dashboard_widgets', 999);
function my_dashboard_widgets() {

    wp_add_dashboard_widget(
        'my_dashboard_widget',          // Слаг виджета
        'My Dashboard Widget',          // Заголовок виджета
        'my_dashboard_widget_content'   // Функция-обработчик, которая отображает содержимое
    );

}

//Содержимое виджета
function my_dashboard_widget_content() {

   //Содержимое здесь
   //Можно сделать свой WP_Query для получения результатов постов или других данных...

}

.

Ответ или решение

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

Теоретическое объяснение

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

Кроме того, WordPress предоставляет возможность настройки интерфейса панелей через фильтры и действия. Например, фильтр get_user_option_screen_layout_dashboard позволяет указать количество колонок в панели, а фильтры contextual_help и screen_options_show_screen помогают скрыть вкладки "Экраные опции" и "Помощь".

Примеры кода

  1. Удаление всех виджетов:

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

    add_action('wp_dashboard_setup', 'remove_all_dashboard_widgets', 9999 );
    function remove_all_dashboard_widgets() {
       global $wp_meta_boxes;
       $wp_meta_boxes['dashboard'] = array(); // Очистка всех виджетов
    }

    Это действие удалит все виджеты из панели инструментов.

  2. Настройка панели под один столбец:

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

    add_filter('get_user_option_screen_layout_dashboard', 'force_one_column_layout');
    function force_one_column_layout($cols) {
       return 1; // Установка на один столбец
    }
  3. Удаление вкладок "Экраные опции" и "Помощь":

    Для удаления вкладок "Экранные опции" и "Помощь" из интерфейса панели, используйте следующий код:

    add_filter('contextual_help', 'remove_dashboard_help_tab', 999, 3);
    add_filter('screen_options_show_screen', '__return_false');
    
    function remove_dashboard_help_tab($old_help, $screen_id, $screen) {
       if ('dashboard' == $screen->base) {
           $screen->remove_help_tabs(); // Удаление вкладки "Помощь"
       }
       return $old_help;
    }
  4. Визуальные элементы:

    Для удаления иконок и заголовков на панели инструментов, можно дополнительно использовать CSS и jQuery:

    add_action('admin_head-index.php', 'customize_dashboard_styles');
    function customize_dashboard_styles() {
       ?>
       <style>
           #icon-index, .wrap h2 {display:none} /* Скрытие икон и заголовков */
       </style>
       <script language="javascript" type="text/javascript">
           jQuery(document).ready(function($) {
               // Дополнительный JavaScript при необходимости
           });
       </script>
       <?php
    }

Применение на практике

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

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

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

Оцените материал
Добавить комментарий

Капча загружается...