En réponse à: barre d'administration WordPress chevauchant la navigation bootstrap twitter
Demandé par: @TheWebs
Si vous utilisez Twitter Bootstrap avec WordPress et que vous avez un problème avec la barre d'administration WordPress qui chevauche votre barre de navigation, vous êtes probablement assez frustré par certaines de ces réponses. J'ai cherché des solutions partout avant de finalement décider de passer à la vitesse inférieure et de trouver une solution qui fait exactement ce dont j'ai besoin.
Voici donc une réponse qui ne cache pas la barre d'administration WordPress, ni ne déplace la barre d'administration WordPress au bas de vos pages. Cette réponse gardera la barre d'administration WordPress là où elle appartient ... En haut de vos pages.
Veuillez noter que cela prendra quelques courtes étapes, mais cela en vaut la peine. Ce n'est pas vraiment un processus compliqué ou long. Je voulais juste m'assurer que l'explication sur la façon de le faire était claire et facile à suivre / comprendre.
Étape 1
Les thèmes ont une balise de modèle pour la balise body qui aidera les auteurs de thèmes à styliser plus efficacement avec CSS. La balise de modèle est appelée
body_class
. Cette fonction donne à l'élément body différentes classes et peut être ajoutée, généralement, dans la header.php
balise HTML du corps.
- Ouvrez votre thème WordPress actuellement actif à l'aide du répertoire Twitter Bootstrap. Trouvez-le
header.php
et ouvrez-le.
- Trouvez
<body>
.
- Remplacer par
<?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>
Après avoir effectué les trois étapes ci-dessus, vous avez maintenant activé avec succès votre thème WordPress avec les classes de corps WordPress.
Étape 2 (FACULTATIF!)
- Ajoutez des classes CSS conditionnelles personnalisées à la
<body>
balise.
Par défaut, WordPress fournit déjà une liste de classes par défaut à la balise HTML, si vous utilisez les fonctions body_class()
ou get_body_class()
.
Si vous affichez le code source de n'importe quelle page front-end rendue sur votre site Web WordPress, vous remarquerez que deux des classes CSS ajoutées automatiquement à la <body>
balise HTML sont «connectées» et «barre d'administration».
Vous remarquerez également que ces noms de classe CSS ne sont ajoutés à la <body>
balise HTML que si l'utilisateur est connecté, sinon ils ne seront pas ajoutés à la <body>
balise HTML .
Donc, si vous ne souhaitez pas utiliser les noms de classe CSS WordPress par défaut, vous pouvez ajouter les vôtres très facilement.
- Ouvrez votre thème WordPress actuellement actif à l'aide du répertoire Twitter Bootstrap. Trouvez-le
functions.php
et ouvrez-le.
- Ajoutez
add_filter('body_class', 'mbe_body_class');
en haut du fichier.
- Ajoutez le code suivant au bas du fichier.
Le code:
function mbe_body_class($classes){
if(is_user_logged_in()){
$classes[] = 'body-logged-in';
} else{
$classes[] = 'body-logged-out';
}
return $classes;
}
Maintenant, si vous affichez le code source de n'importe quelle page front-end rendue sur votre site Web WordPress, si l'utilisateur est connecté, vous verrez que "body-log-in" a été ajouté à la <body>
balise HTML , et si l'utilisateur est déconnecté, vous verrez "corps déconnecté" a été ajouté à la <body>
balise HTML .
Étape 3
- Ajoutez le code CSS à votre thème.
C'est la section de code qui corrigera votre thème pour afficher à la fois la barre d'administration WordPress et votre navigation Twitter Bootstrap, que l'utilisateur soit connecté ou déconnecté de votre site Web.
- Ouvrez votre thème WordPress actuellement actif à l'aide du répertoire Twitter Bootstrap. Trouvez-le
functions.php
et ouvrez-le.
- Ajoutez
add_action('wp_head', 'mbe_wp_head');
en haut du fichier.
- Ajoutez le code suivant au bas du fichier.
Le code:
function mbe_wp_head(){
echo '<style>'.PHP_EOL;
echo 'body{ padding-top: 70px !important; }'.PHP_EOL;
// Using custom CSS class name.
echo 'body.body-logged-in .navbar-fixed-top{ top: 28px !important; }'.PHP_EOL;
// Using WordPress default CSS class name.
echo 'body.logged-in .navbar-fixed-top{ top: 28px !important; }'.PHP_EOL;
echo '</style>'.PHP_EOL;
}
MODIFIER AU CODE
add_action('wp_head', 'mbe_wp_head');
function mbe_wp_head(){
echo '<style>'
.PHP_EOL
.'body{ padding-top: 70px !important; }'
.PHP_EOL
.'body.body-logged-in .navbar-fixed-top{ top: 46px !important; }'
.PHP_EOL
.'body.logged-in .navbar-fixed-top{ top: 46px !important; }'
.PHP_EOL
.'@media only screen and (min-width: 783px) {'
.PHP_EOL
.'body{ padding-top: 70px !important; }'
.PHP_EOL
.'body.body-logged-in .navbar-fixed-top{ top: 28px !important; }'
.PHP_EOL
.'body.logged-in .navbar-fixed-top{ top: 28px !important; }'
.PHP_EOL
.'}</style>'
.PHP_EOL;
}
Cette version de la fonction mbe_wp_head comprend une requête multimédia mobile-first, pour garantir que votre en-tête est poussé sur la bonne distance. Pour les mobiles, la barre d'administration WP mesure 48 pixels. Après le point d'arrêt 783px, la barre d'administration se réduit à seulement 28px de hauteur.
Voilà. Si l'utilisateur est connecté, vous devriez maintenant avoir la barre d'administration WordPress tout en haut de votre page, immédiatement suivie de votre navigation Twitter Bootstrapped. Si l'utilisateur est déconnecté de votre site Web WordPress, votre navigation Twitter Bootstrap devrait toujours s'afficher correctement en haut de votre site Web.
Cela n'a pas fonctionné pour moi, mais j'ai trouvé une bonne solution. Dans votre header.php, utilisez la fonction wordpress pour demander si la barre d'outils est affichée, puis créez un div vide sous la div navbar:
la source
is_admin_bar_showing()
, pas seulement si l'utilisateur est connecté, ce qui est bien étant donné que quelqu'un peut être connecté, mais a désactivé la barre d'administration. Merci!<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
.fix_wp_overlap { min-height: 32px; } @media screen and (max-width: 782px) { .fix_wp_overlap { top: 46px !important; } }
vous pouvez essayer ceci:
si cela fonctionne pour vous (ce qui devrait être le cas!), vous devrez déplacer la barre d'administration wp vers le bas en collant le code ci-dessous dans un dossier de plugins ou votre fichier functions.php:
comme alternative, vous pouvez utiliser ce plugin
je n'aime pas vraiment utiliser les plugins car la plupart des thèmes chargent mon script avec des codes bidons dont je n'ai pas besoin ... les solutions 1 et 2 ci-dessus fonctionnent bien, mais si cela ne fonctionne pas pour vous, vous pouvez essayer la solution 3 ci-dessous:
Cela semblait bien fonctionner pour moi sans les problèmes de 28px ..
la source
Cela n'a pas fonctionné pour moi jusqu'à ce que j'ajoute ceci à la balise body:
Ensuite, cela a bien fonctionné!
la source
Parfait! Juste ce que je cherchais, cependant, j'ai fait quelque chose d'un peu différemment à l'étape 3. Je ne sais pas si cela importe, mais mon code ressemble à ceci ...
Vous avez mentionné l'ajout à différents endroits, mais je l'ai toujours fait comme ça et cela semble très bien fonctionner. Merci pour le correctif!
la source
Correction de Bootstrap 'navbar-fixed-top' pour éviter le chevauchement du menu du site avec le menu d'administration WordPress
la source