web-dev-qa-db-fra.com

Désactiver la barre d’administration (barre d’outils) dans le backend - pas facile

Je travaille sur un thème pour les pages d’administration d’arrière-plan, il s’agit d’une application Web personnalisée construite sur WP.

Après avoir étudié admin-bar.php et la fonction is_admin_bar_showing() pendant quelques minutes, j'ai décidé de procéder ainsi:

function kill_admin_toolbar() {
    add_filter( 'xmlrpc_enabled', '__return_false' );
    define( 'XMLRPC_REQUEST', false );
}
add_action( 'admin_init', 'kill_admin_toolbar' );

Je ne prévois jamais d'utiliser XML-RPC avec cette application.

Avec ce code, il n'y a plus de bande de 32px de barre d'outils inamovible en haut de l'écran d'administration.

Je ne vois pas d'effets secondaires étranges jusqu'à présent. Qu'en pensez-vous?

C'est soit cela, soit je modifie admin-bar.php et insère return false; juste après la définition de la fonction pour is_admin_bar_showing(). Cependant, l'idée de toucher un seul fichier principal me dérange beaucoup.

Vraiment affolant, il n’ya pas de crochet suffisamment tôt dans cette fonction pour le faire.

1
C C

Bien que ce que vous avez utilisé semble fonctionner pour le moment, je ne peux pas vous garantir que cela ne posera pas d'autres problèmes, maintenant ou dans l'avenir, car, comme vous le savez déjà, tromper is_admin_bar_showing() n'est pas ce que la vérification de la constante XMLRPC_REQUEST a été conçue. pour. Par conséquent, même si cela ne posait pas de problème maintenant, je ne pense pas qu'il serait prévisible de l'utiliser de la sorte.

Cependant, j'ai continué votre chasse et Je pense avoir trouvé le filtre dont vous avez besoin: wp_admin_bar_class.

Renvoyer false à ce filtre - ou renvoyer toute chaîne qui ne correspond pas au nom d'une classe définie - causera _wp_admin_bar_init() à court-circuiter et donc jamais initialiser la barre en premier lieu:

add_filter( 'wp_admin_bar_class', '__return_false' );

Cela fonctionne, mais me donne malheureusement un espace vide de Nice, à la place de la barre d'administration, en raison de la classe CSS wp-toolbar présente sur la balise <html> du tableau de bord. Ceci est ajouté dans wp-admin/includes/template.php et je ne vois pas immédiatement un moyen de le supprimer dans PHP. Donc, vous aurez probablement besoin de remplacer ce remplissage avec du CSS personnalisé (désolé, peut-être qu'une solution uniquement basée sur PHP n'est pas possible après tout!):

add_action( 'admin_head', function(){
  ?><style> html.wp-toolbar { padding-top: 0; } </style><?php
});

En supprimant la barre d’administration de cette manière, il peut y avoir d’autres petits problèmes, étant donné que is_admin_bar_showing() est techniquement toujours vrai, mais je pense qu’ils seraient assez mineurs, et si vous en trouviez, il ne serait probablement pas trop difficile de trouver une solution de contournement.

Pour être sûr (du moins pour le moment), vous pouvez rechercher dans le source toute utilisation de la fonction. À partir de la version 4.5.3, l'utilisation semble être limitée à quatre fichiers: admin-header.php , modèle. php , admin-bar.php et post-template.php , et d'un coup d'œil rapide, il semble que vous souhaitiez peut-être filtrer admin_body_class pour supprimer "admin-bar" à partir de là aussi, juste au cas où (cela ne fait pas une différence visible pour moi cependant).

Voir aussi la classe 'no-personnaliser-support' - Je ne pense pas que cela vous affectera, car il semble être conçu uniquement pour 'masquer -if-non-personnaliser 'les options du menu dans la barre d'outils ... que vous ne visualisez bien sûr pas!

1
Tim Malone