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

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

Следующий код удалил некоторые, но не все виджеты с панели управления WP. Я добавляю его в файл функций внутри своей темы. У меня два вопроса:

1.) Почему возникают ошибки “неопределенной константы” для remove_dashboard_meta, admin_init и manage_options.

function remove_dashboard_meta() {

remove_meta_box( ‘dashboard_incoming_links’, ‘dashboard’, ‘normal’ );
remove_meta_box( ‘dashboard_plugins’, ‘dashboard’, ‘normal’ );
remove_meta_box( ‘dashboard_primary’, ‘dashboard’, ‘side’ );
remove_meta_box( ‘dashboard_secondary’, ‘dashboard’, ‘normal’ );
remove_meta_box( ‘dashboard_quick_press’, ‘dashboard’, ‘side’ );
remove_meta_box( ‘dashboard_recent_drafts’, ‘dashboard’, ‘side’ );
remove_meta_box( ‘dashboard_recent_comments’, ‘dashboard’, ‘normal’ );
remove_meta_box( ‘dashboard_right_now’, ‘dashboard’, ‘normal’ );
remove_meta_box( ‘dashboard_activity’, ‘dashboard’, ‘normal’);//с версии 3.8
}
add_action( ‘admin_init’, ‘remove_dashboard_meta’ );

Второй вопрос в том, что обзор Elementor и лента WPdeveloper все еще на месте. Какой код нужно использовать, чтобы их удалить? Это WP 5.5

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

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

//Удалить все виджеты панели администратора
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 для получения результатов постов или других данных...

}

пример выше возможно имеет неправильный тип кавычек из-за копирования и вставки. Вот правильный тип

//Отключить стандартные виджеты панели управления
function remove_dashboard_meta() {
    remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
    remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
    remove_meta_box('dashboard_primary', 'dashboard', 'normal');
    remove_meta_box('dashboard_secondary', 'dashboard', 'normal'); 
    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
    remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
    remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
    remove_meta_box('dashboard_activity', 'dashboard', 'normal');
    remove_meta_box('rg_forms_dashboard', 'dashboard', 'normal');
    remove_action('admin_notices', 'update_nag');
}
add_action('admin_init', 'remove_dashboard_meta');

Второй ответ заключается в том, что чтобы удалить Elementor и его обзор, используйте следующий код:

remove_meta_box('e-dashboard-overview', 'dashboard', 'normal');

Виджет ленты разработчиков WordPress можно удалить с помощью:

remove_meta_box('wpdev_feed_widget', 'dashboard', 'normal');

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

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

Теория

1. Проблема неопределённых констант:
Ошибки типа "Use of undefined constant" указывают на неправильное использование синтаксиса PHP. В нашем случае, это происходит из-за использования нестандартных одинарных кавычек (‘ ’), что приводит к интерпретации строк как констант. В PHP для определения строковых литералов должны использоваться стандартные одинарные (‘ ‘) или двойные (") кавычки.

2. Удаление стандартных виджетов:
Помимо исправления ошибок синтаксиса, важно учитывать, что каждая версия WordPress может содержать свои специфические идентификаторы виджетов. Поэтому знание их идентификаторов для текущей версии WP 5.5 крайне необходимо.

3. Создание собственных виджетов:
Создание собственных виджетов на панели администратора требует понимания, как использовать функции WordPress, такие как wp_add_dashboard_widget, и как управлять их порядком отображения.

Пример

Рассмотрим исправленный код для удаления стандартных виджетов и добавления собственных:

// Функция для удаления стандартных виджетов
function remove_dashboard_meta() {
    // Наши стандартные виджеты
    remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
    remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
    remove_meta_box('dashboard_primary', 'dashboard', 'side');
    remove_meta_box('dashboard_secondary', 'dashboard', 'normal'); 
    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
    remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
    remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
    remove_meta_box('dashboard_activity', 'dashboard', 'normal');
    // Элементы от внешних плагинов, таких как Elementor
    remove_meta_box('e-dashboard-overview', 'dashboard', 'normal');
    remove_meta_box('wpdev_feed_widget', 'dashboard', 'normal');
    // Убираем уведомления
    remove_action('admin_notices', 'update_nag');
}

// Добавляем наш PHP-хук
add_action('admin_init', 'remove_dashboard_meta');

// Функция добавления собственного виджета
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() {
    echo "Содержимое моего виджета."; // Здесь можно добавить свой контент
}

Применение

1. Избегание ошибок синтаксиса:
Убедитесь, что вы используете правильные кавычки и структуру кода для избегания ошибок интерпретатора PHP. Это позволит вам корректно удалять встроенные виджеты и предотвратит появление ошибок в дальнейшем.

2. Проверка идентификаторов виджетов:
Для корректного удаления виджетов необходимо узнавать их идентификаторы. В документации плагинов, таких как Elementor, можно найти нужные идентификаторы, или же использовать дебаггинг балков, чтобы идентифицировать метабоксы, которые мешают.

3. Порядок выполнения кода:
Важно установить правильный приоритет выполнения функций в хуках WordPress. В приведенном примере установка высокого приоритета (999) для функции добавления собственных виджетов позволяет сначала удалить все ненужные виджеты, а затем добавить новые.

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

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

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