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

22 нояб. 2012 г., 03:34:57
Просмотры: 14.4K
Голосов: 4

Мне нужна полностью пустая панель управления WordPress - без виджетов и желательно с одной колонкой.

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

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

0
Все ответы на вопрос 4
2
12

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

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

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;
}

Хорошо, теперь в Dashboard почти ничего нет, что дальше?

Немного CSS для скрытия icon-index и H2 заголовка, и немного 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 вместо данной.

22 нояб. 2012 г. 03:34:57
Комментарии

Почему бы просто не использовать $wp_meta_boxes['dashboard']['normal']['core'] = array()?

fuxia fuxia
22 нояб. 2012 г. 03:46:31

@toscho : Я чувствовал, что в этих строках что-то не так... Спасибо большое :)

brasofilo brasofilo
22 нояб. 2012 г. 03:50:12
1

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

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

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

}
20 сент. 2015 г. 16:08:33
Комментарии

Это хорошо, но не удаляет метабоксы, добавленные плагинами, такими как Gravity Forms. Если вы хотите удалить даже те, что добавлены плагинами, вам нужно добавить высокий приоритет к вызову действия, например: add_action('wp_dashboard_setup', 'remove_dashboard_widgets', 99999);

cfx cfx
25 февр. 2025 г. 05:01:38
0

Удаление стандартных метабоксов 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();
}
12 нояб. 2023 г. 23:44:58
0

Если вы хотите скрыть все виджеты панели управления, КРОМЕ созданных вами пользовательских:

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

//Удаляем все стандартные виджеты панели управления
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_content'   // Функция вывода содержимого
    );

    
}

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

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

}
24 янв. 2025 г. 00:17:40