Убрать ссылку на меню Темы из Панели управления

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

Я пытаюсь удалить меню из панели администратора

Мой код работает, так как он удаляет некоторые страницы, но я не могу удалить следующие.
admin.php?page=ot-theme-options
admin.php?page=ot-settings
admin.php?page=yith_woocompare_panel

add_action('admin_menu', 'remove_admin_menu_links');
function remove_admin_menu_links(){
    $user = wp_get_current_user();
    if( $user && isset($user->user_email) && '[email protected]' == $user->user_email ) {
        remove_menu_page('tools.php');
        remove_menu_page('options-general.php');
        remove_menu_page('plugins.php');
        remove_menu_page('users.php');
        remove_menu_page( 'themes.php' );  
        remove_submenu_page( 'themes.php', 'widgets.php' ); 
        remove_menu_page( 'wpcf7' ); 
        remove_menu_page( 'ot-theme-options' ); // Не работает
        remove_menu_page( 'ot-settings' ); // Не работает 

      //echo '<pre>' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>';

    }
}

remove_submenu_page( 'themes.php', 'ot-theme-options' );
remove_submenu_page( 'themes.php', 'ot-settings' );

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

Чтобы удалить ссылки на определенные пункты меню в административной панели WordPress, можно использовать хук admin_menu. В вашем случае вы пытаетесь удалить пункты меню для страниц ot-theme-options, ot-settings и yith_woocompare_panel, но они не удаляются с помощью функций remove_menu_page и remove_submenu_page. Давайте рассмотрим, как это можно исправить.

Проблема

Ваша первоначальная функция remove_admin_menu_links содержит несколько вызовов remove_menu_page, но они, похоже, не работают для настроек темы (например, ot-theme-options и ot-settings). Возможно, это происходит из-за того, что для этих страниц используются уникальные идентификаторы, а не стандартные в WordPress. Поэтому важно выяснить правильные идентификаторы и убедиться, что вы правильно настраиваете свои вызовы.

Решение

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

  2. Подходящая реализация функции:
    Вот пример улучшенной функции, которая должна помочь:

    add_action('admin_menu', 'remove_admin_menu_links');
    function remove_admin_menu_links() {
       $user = wp_get_current_user();
       if ($user && isset($user->user_email) && '[email@example.com]' == $user->user_email) {
           // Удаление стандартных меню
           remove_menu_page('tools.php'); 
           remove_menu_page('options-general.php'); 
           remove_menu_page('plugins.php'); 
           remove_menu_page('users.php');
           remove_menu_page('themes.php');  
    
           // Удаление пунктов меню для определённых плагинов
           remove_menu_page('ot-theme-options'); // Проверьте идентификатор в $GLOBALS['menu']
           remove_menu_page('ot-settings'); // Проверьте идентификатор в $GLOBALS['menu']
           remove_menu_page('yith_woocompare_panel'); // Убедитесь в правильности 
    
           // Если это подменю
           remove_submenu_page('themes.php', 'ot-theme-options'); 
           remove_submenu_page('themes.php', 'ot-settings'); 
       }
    }
  3. Проверка наличия идентификаторов: Если указанные идентификаторы не работают, попробуйте вывести меню для диагностики. Вы можете отключить удаление меню временно и вывести содержимое $GLOBALS['menu']:

    echo '<pre>' . print_r($GLOBALS['menu'], true) . '</pre>';
  4. Приоритет выполнения: Возможно, необходимо изменить приоритет выполнения вашего хука admin_menu. Это можно сделать, добавив третий параметр:

    add_action('admin_menu', 'remove_admin_menu_links', 99);

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

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

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