Als Antwort auf: WordPress-Admin-Leiste überlappende Twitter-Bootstrap-Navigation
Gefragt von: @TheWebs
Wenn Sie Twitter Bootstrap mit WordPress verwenden und ein Problem mit der WordPress-Administrationsleiste haben, die sich mit Ihrer Navigationsleiste überschneidet, sind Sie wahrscheinlich ziemlich frustriert über einige dieser Antworten. Ich habe überall nach Lösungen gesucht, bevor ich mich letztendlich entschied, einfach in einen niedrigeren Gang zu schalten und eine Lösung zu finden, die genau das tut, was ich brauche.
Hier ist eine Antwort, die die WordPress-Admin-Leiste nicht verbirgt oder die WordPress-Admin-Leiste nicht an den unteren Rand Ihrer Seiten verschiebt. Diese Antwort hält die WordPress-Admin-Leiste genau dort, wo sie hingehört ... Oben auf Ihren Seiten.
Bitte beachten Sie, dass dies einige kurze Schritte dauern wird, aber es lohnt sich. Es ist nicht wirklich ein komplizierter oder zeitaufwändiger Prozess. Ich wollte nur sicherstellen, dass die Erklärung dazu klar und leicht zu verstehen ist.
Schritt 1
Themen haben ein Vorlagen-Tag für das Body-Tag, mit dem Autoren von Themen effektiver mit CSS gestalten können. Das Vorlagen-Tag wird aufgerufen
body_class
. Diese Funktion gibt dem Body-Element verschiedene Klassen und kann normalerweise im header.php
HTML-Body-Tag des HTML-Tags hinzugefügt werden .
- Öffnen Sie Ihr derzeit aktives WordPress-Theme über das Twitter Bootstrap-Verzeichnis. Finde
header.php
und öffne es.
- Finden
<body>
.
- Ersetzen mit
<?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>
Nachdem Sie die drei oben genannten Schritte ausgeführt haben, haben Sie Ihr WordPress-Theme nun erfolgreich mit WordPress-Body-Klassen aktiviert.
Schritt 2 (OPTIONAL!)
- Fügen Sie dem
<body>
Tag benutzerdefinierte bedingte CSS-Klassen hinzu .
Standardmäßig stellt WordPress dem HTML-Tag bereits eine Liste der Standardklassen zur Verfügung, wenn Sie die Funktionen body_class()
oder get_body_class()
verwenden.
Wenn Sie den Quellcode einer gerenderten Front-End-Seite auf Ihrer WordPress-Website anzeigen, werden Sie feststellen, dass zwei der CSS-Klassen, die automatisch zum HTML- <body>
Tag hinzugefügt werden, "angemeldet" und "Admin-Leiste" sind.
Sie werden auch feststellen, dass diese CSS-Klassennamen nur dann zum HTML- <body>
Tag hinzugefügt werden, wenn der Benutzer angemeldet ist. Andernfalls werden sie nicht zum HTML- <body>
Tag hinzugefügt .
Wenn Sie also nicht die Standardnamen der WordPress-CSS-Klasse verwenden möchten, können Sie ganz einfach Ihre eigenen hinzufügen.
- Öffnen Sie Ihr derzeit aktives WordPress-Theme über das Twitter Bootstrap-Verzeichnis. Finde
functions.php
und öffne es.
- In
add_filter('body_class', 'mbe_body_class');
Zum Anfang der Datei.
- Fügen Sie den folgenden Code am Ende der Datei hinzu.
Der Code:
function mbe_body_class($classes){
if(is_user_logged_in()){
$classes[] = 'body-logged-in';
} else{
$classes[] = 'body-logged-out';
}
return $classes;
}
Wenn Sie nun den Quellcode einer gerenderten Front-End-Seite auf Ihrer WordPress-Website anzeigen und der Benutzer angemeldet ist, wird dem HTML- <body>
Tag "Körper angemeldet" hinzugefügt , und wenn der Benutzer angemeldet ist Abgemeldet sehen Sie, dass dem HTML- <body>
Tag "Körper abgemeldet" hinzugefügt wurde .
Schritt 3
- Fügen Sie den CSS-Code zu Ihrem Thema hinzu.
Dies ist der Codeabschnitt, der Ihr Thema korrigiert, um sowohl die WordPress-Admin-Leiste als auch Ihre Twitter-Bootstrap-Navigation ordnungsgemäß anzuzeigen, unabhängig davon, ob der Benutzer an Ihrer Website angemeldet oder von dieser abgemeldet ist.
- Öffnen Sie Ihr derzeit aktives WordPress-Theme über das Twitter Bootstrap-Verzeichnis. Finde
functions.php
und öffne es.
- In
add_action('wp_head', 'mbe_wp_head');
Zum Anfang der Datei.
- Fügen Sie den folgenden Code am Ende der Datei hinzu.
Der 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;
}
Zum Code bearbeiten
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;
}
Diese Version der Funktion mbe_wp_head enthält eine Mobile-First-Media-Abfrage, um sicherzustellen, dass Ihr Header in der richtigen Entfernung nach unten verschoben wird. Für Handys ist die WP-Admin-Leiste 48 Pixel groß. Nach dem Haltepunkt von 783 Pixel wird die Admin-Leiste auf nur 28 Pixel verkürzt.
Hier hast du es. Wenn der Benutzer angemeldet ist, sollte sich jetzt die WordPress-Admin-Leiste ganz oben auf Ihrer Seite befinden, unmittelbar gefolgt von Ihrer Twitter Bootstrapped-Navigation. Wenn der Benutzer von Ihrer WordPress-Website abgemeldet ist, sollte Ihre Twitter-Bootstrap-Navigation weiterhin entsprechend oben auf Ihrer Website angezeigt werden.
Hat bei mir nicht funktioniert, aber ich habe eine nette Lösung gefunden. Verwenden Sie in Ihrer header.php die WordPress-Funktion, um abzufragen, ob die Symbolleiste angezeigt wird, und erstellen Sie dann ein leeres Div unter dem Navbar-Div:
quelle
is_admin_bar_showing()
nicht nur sucht , wenn der Benutzer angemeldet ist, was gut ist, wenn man bedenkt, dass jemand angemeldet ist, sondern auch die Admin-Leiste deaktiviert. Vielen Dank!<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; } }
Sie können dies versuchen:
Wenn das für Sie funktioniert (was es sollte!), müssen Sie die wp-Admin-Leiste nach unten verschieben, indem Sie den folgenden Code in einen Plugins-Ordner oder in Ihre Datei functions.php stecken:
Alternativ können Sie dieses Plugin verwenden
Ich mag es nicht wirklich, Plugins zu verwenden, weil die meisten Themen mein Skript mit falschen Codes laden, die ich nicht brauche ... Lösung 1 und 2 oben funktioniert gut, aber wenn es für Sie nicht funktioniert, können Sie Lösung 3 unten versuchen:
Das schien für mich ohne die 28px-Probleme gut zu funktionieren.
quelle
Es hat bei mir nicht funktioniert, bis ich dies dem Body-Tag hinzugefügt habe:
Dann hat es gut funktioniert!
quelle
Perfekt! Genau das, wonach ich gesucht habe, habe ich in Schritt 3 etwas anderes gemacht. Ich bin mir nicht sicher, ob es wichtig ist, aber mein Code sieht so aus ...
Sie haben das Hinzufügen an verschiedenen Stellen erwähnt, aber ich habe es immer so gemacht und es scheint gut zu funktionieren. Danke für die Fehlerbehebung!
quelle
Fix für Bootstrap 'navbar-fixed-top', um eine Überlappung des Site-Menüs mit dem WordPress-Admin-Menü zu verhindern
quelle