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.
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');
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é)
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).
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/
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' ) {