web-dev-qa-db-fra.com

Problèmes liés à la suppression de la barre d'administration

J'essaie de supprimer la barre d'administration d'un thème d'un thème.

J'ai trouvé le bloc de code suivant:

add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );

Ce qui fonctionne bien. Cependant je souhaitais ajouter un choix à l'utilisateur afin de pouvoir ajouter un bloc de code permanent à mon thème standard et permettre aux utilisateurs d'activer ou de désactiver la barre d'administration.

J'ai réussi à ajouter la bascule dans la zone d'administration et à rappeler la valeur avec succès. Toutefois, lorsque je teste la valeur afin de contrôler le rappel de la barre d'administration, la barre d'administration est activée, mais le code CSS appliqué à l'élément HTML (margin-top: 28px !important;) reste, laissant un espace de 28 pixels en haut de mon thème.

Voici le bloc de code que j'utilise pour rappeler la valeur et répondre en conséquence:

function block_admin(){
    $show = get_option('admin_bar_');
    $show = $show['admin_bar_toggle'];
    if (!$show || $show != 'on'){
        add_filter( 'show_admin_bar', '__return_false' );
        remove_action( 'personal_options', '_admin_bar_preferences' );
    } 
}
add_action('init', 'block_admin');

Suggestion

Par exigence, mon option personnalisée (à l'aide de register_setting) n'est initialisée que lorsque le hook admin_menu est lancé, alors que block_admin est lancé sur init. Cependant, je ne pense pas que ce soit le problème car je ne pense pas que get_option dépende du paramètre en cours d’enregistrement, mais plutôt de l’option existante (ou non) dans la base de données.

1
Mild Fuzz

Le simple lancement de la fonction à une étape antérieure a résolu le problème

 function block_admin(){
    $show = get_option('admin_bar_');
    $show = $show['admin_bar_toggle'];
    fb::log($show,'shoe');
    if (!$show || $show != 'on'){
        add_filter( 'show_admin_bar', '__return_false' );
        remove_action( 'personal_options', '_admin_bar_preferences' );
    } 
}
add_action('after_setup_theme','block_admin');
1
Mild Fuzz

Il existe déjà une option par utilisateur pour désactiver la barre d’administration dans les dernières versions de Wordpress. Vous le trouverez dans les paramètres du profil utilisateur:

…/Wp-admin/profile.php (cliquez sur votre nom après vous être connecté)

1
feeela

Aviez-vous essayé show_admin_bar(false) ? À partir du code, la barre d’administration devrait être supprimée et il est prudent de s’exécuter très tôt (en charge, en fait).

1
Rarst

Pas sûr que cela corresponde à vos besoins. Mais voici le plugin pour toogle admin bar on off globaly. Pourquoi ne pas jeter un oeil :)

http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/

0
Rajeev Vyas

Avez-vous enregistré vos paramètres, de sorte qu'ils existent dans la base de données?

Aussi: et si vous changez ceci:

if ( ! $show || $show != 'on' ) {

...pour ça:

if ( ! isset( $show ) || $show != 'on' ) {
0
Chip Bennett