Remover Personalizar Plano de Fundo e Cabeçalho do menu do App Aparência sem CSS ou JS

2

Estou tentando remover o plano de fundo e o cabeçalho do menu de aparência, mas eles não parecem desaparecer! Eu acho que é porque eu tenho ativado personalizar, mas posso removê-los de qualquer maneira sem usar CSS ou JS?

Aqui está o meu código:

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

Obrigado antecipadamente!

    
por Fredrik 02.06.2015 / 10:45

4 respostas

4

Por mais complicada que pareça, eu sempre acho que a melhor maneira de lidar com as modificações no menu do admin é ignorar as funções do wordpress remove_ e ir diretamente para o $menu e $submenu globals. No caso que você especificou aqui, você deseja alterar seu código para:

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

Os índices das páginas no array themes.php parecem estranhos, mas o que não é quando você tenta hackear WP ?! Uma boa referência para usar esses globals pode ser encontrada aqui .

EDIT: Apenas um pensamento, dada a quantidade variável de plugins, etc, que poderia (potencialmente, mas não definitivamente) alterar o índice de um determinado item de menu / submenu na matriz, seria uma boa idéia para verificar o números necessários se o snippet que forneci não funcionar. Você pode fazer isso modificando o código levemente:

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

Isso "imprimirá" a matriz $submenu , a partir da qual você pode encontrar os números exatos de que precisa.

EDIT: Como eu não tenho o representante para comentar sobre esta comunidade ainda, vale a pena ressaltar que @Fredrik fez um bom trabalho de generalização. +1.

    
por James Cushing 02.06.2015 / 11:21
6

Aqui está minha final do código. Obrigado pela resposta rápida!

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]);
    }
}
    
por Fredrik 02.06.2015 / 12:36
1

Aqui está outra opção para remover cabeçalho e plano de fundo ( 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');    
}
    
por Paal Joachim Romdahl 24.06.2015 / 23:58
0

Obrigado a todos! Aqui está o código dentro do 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 );
    
por Yutaro Ikeda 27.09.2018 / 05:19