web-dev-qa-db-fra.com

Supprimer Personnaliser l’arrière-plan et l’en-tête du menu administrateur Appearance sans CSS ni JS

J'essaie de supprimer l'arrière-plan et l'en-tête du menu de présentation, mais ils ne semblent pas disparaître! Je pense que c'est parce que j'ai activé la personnalisation, mais puis-je quand même les supprimer sans utiliser CSS ou JS?

Voici mon code:

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

Merci d'avance!

2
Fredrik

Aussi compliqué que cela puisse paraître, je trouve toujours que le meilleur moyen de gérer les modifications du menu administrateur est de négliger les fonctions wordpress remove_ données et d'aller directement aux globales $menu et $submenu. Dans le cas où vous avez spécifié ici, vous voudriez changer votre code pour:

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

Les index des pages dans le tableau themes.php semblent étranges, mais que n’est-ce pas quand vous essayez de pirater WP?! Vous trouverez une bonne référence pour l’utilisation de ces globaux ici .

EDIT: Juste une pensée, étant donné les quantités variables de plugins, etc. qui pourraient (potentiellement, mais pas définitivement) changer l’index d’un élément de menu/sous-menu donné dans le tableau, ce serait une bonne idée de vérifier les nombres requis si l'extrait que j'ai fourni ne fonctionne pas. Vous pouvez le faire en modifiant légèrement le code comme suit:

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

Cela "joliment" imprimer le tableau $submenu, à partir duquel vous pouvez trouver les nombres exacts dont vous avez besoin.

EDIT: Comme je n’ai pas encore le représentant pour commenter cette communauté, il est utile de souligner que @Fredrik a fait un bon travail de généralisation. +1.

4
James Cushing

Voici ma finale du code. Merci pour la réponse rapide!

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

Voici une autre option pour supprimer l'en-tête et l'arrière-plan ( 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

Merci a tous! Voici le code dans 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