it-swarm.com.ru

Удалите Настроить Фон и Заголовок из меню администрирования Внешний вид без CSS или JS

Я пытаюсь удалить фон и заголовок из меню внешнего вида, но они не исчезают! Я думаю, это потому, что я активировал настройку, но могу ли я удалить их в любом случае без использования CSS или JS?

Вот мой код:

add_action('admin_menu', 'remove_unnecessary_wordpress_menus', 999);

function remove_unnecessary_wordpress_menus(){
    remove_menu_page('themes.php?page=custom-background');
    remove_submenu_page('themes.php', 'custom-background');
    remove_submenu_page('themes.php', 'custom-header');
}

Заранее спасибо!

2
Fredrik

Как бы сложно это ни звучало, я всегда нахожу, что лучший способ справиться с изменениями в меню администратора - это пропустить заданные функции wordpress remove_ и сразу перейти к глобальным переменным $menu и $submenu. В случае, если вы указали здесь, вы хотите изменить свой код на:

add_action('admin_menu', 'remove_unnecessary_wordpress_menus', 999);

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    unset($submenu['themes.php'][20]);
    unset($submenu['themes.php'][22]);
}

Индексы страниц в массиве themes.php кажутся странными, но что происходит, когда вы пытаетесь взломать WP ?! Хорошую ссылку для использования этих глобальных файлов можно найти здесь .

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

add_action('admin_menu', 'remove_unnecessary_wordpress_menus', 999);

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    //Left margin is to account for the admin sidebar menu
    echo '<pre style="margin-left:11em">';
    print_r($submenu);
    echo '</pre>';
}

Это "красиво" распечатает массив $submenu, из которого вы сможете найти нужные вам числа.

Правка: Поскольку у меня пока нет представителя, чтобы комментировать это сообщество, стоит отметить, что @Fredrik сделал хорошую работу по обобщению. +1.

4
James Cushing

Вот мой финал кода. Спасибо за быстрый ответ!

add_action('admin_menu', 'remove_unnecessary_wordpress_menus', 999);

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    foreach($submenu['themes.php'] as $menu_index => $theme_menu){
        if($theme_menu[0] == 'Header' || $theme_menu[0] == 'Background')
        unset($submenu['themes.php'][$menu_index]);
    }
}
6
Fredrik

Вот еще один вариант удаления заголовка и фона ( source ):

//Remove the custom options provided by the default twentyeleven theme.     
add_action( 'after_setup_theme','remove_twentyeleven_options', 100 );
function remove_twentyeleven_options() {    
    remove_custom_background();
    remove_custom_image_header();
    remove_action('admin_menu', 'twentyeleven_theme_options_add_page');    
}
1
Paal Joachim Romdahl

Спасибо всем! Вот код в WordPress 4.9.8.

function remove_header_and_bg(){
  global $submenu;
  unset($submenu['themes.php'][6]); // customize
  unset($submenu['themes.php'][15]); // header_image
  unset($submenu['themes.php'][20]); // background_image
}
add_action( 'admin_menu', 'remove_header_and_bg', 999 );
0
Yutaro Ikeda