Wie entferne ich die Admin-Leiste (Styling) nur vom Frontend?

10

Wenn Sie angemeldet sind, fügt die Admin-Leiste meinem Seitenbereich Folgendes hinzu <head>:

<style media="screen" type="text/css">
    html { margin-top: 28px !important; }
    * html body { margin-top: 28px !important; }
</style>

Jetzt kann ich dies entfernen, indem ich die Admin-Leiste deaktiviere

/* Disable the Admin Bar. */
add_filter( 'show_admin_bar', '__return_false' );

oder vollständig entfernen

/* Remove admin bar */
remove_action('init', 'wp_admin_bar_init');

Ich möchte die Admin-Leiste in der Admin-Oberfläche behalten und nur das CSS vom Frontend entfernen.

Ich verwende bereits CSS-Reset, wo ich es festgelegt habe margin: 0px, aber das Admin-Bar-Styling überschreibt dies.

Wie kann ich das Styling vom Frontend entfernen?

PS. Ich weiß, dass ich die Admin-Leiste pro Benutzer deaktivieren kann, aber das ist nicht das, was ich will.

Steven
quelle

Antworten:

21
function hide_admin_bar_from_front_end(){
  if (is_blog_admin()) {
    return true;
  }
  return false;
}
add_filter( 'show_admin_bar', 'hide_admin_bar_from_front_end' );

Bearbeiten:

Wie @Walf in den Kommentaren vorgeschlagen hat, könnte dies wie folgt geschrieben werden:

add_filter('show_admin_bar', 'is_blog_admin');
Maxim Krizhanovsky
quelle
1
Ah :) Ich habe auf Admin getestet, als ich etwas Ähnliches ausprobiert habe. Ich habe das vergessen is_blog_admin. Danke :)
Steven
In welche Datei geht das
@HiroProtagonist kann in jedem Plugin oder in functions.php Ihres Themas definiert werden.
Maxim Krizhanovsky
2
Sie können es ein wenig verkürzen:add_filter( 'show_admin_bar', function (){ return is_blog_admin() });
MiCc83
1
Sie können es sehr verkürzen : add_filter('show_admin_bar', 'is_blog_admin');Ich habe die Bearbeitung vorgeschlagen, aber sie wurde abgelehnt. Ich denke, die beiden hochkarätigen Rezensenten sahen darin zu viel Veränderung, ohne zu bemerken, dass es genau dasselbe ist.
Walf
5

Wenn Sie die Admin-Leiste (Symbolleiste) UND das Bump-CSS von Ihrer Seite entfernen möchten, verwenden Sie Folgendes:

function wpse_99333_hide_admin_bar_from_front_end(){
  if ( is_blog_admin() ) {
    return true;
  }
  remove_action( 'wp_head', '_admin_bar_bump_cb' );
  return false;
}
add_filter( 'show_admin_bar', 'wpse_99333_hide_admin_bar_from_front_end' );

Die _admin_bar_bump_cbFunktion ist diejenige, die das CSS einfügt (befindet sich in wp-includes / admin-bar.php).

jjeaton
quelle
1

Ich würde so etwas machen:

Entfernen Sie die Admin-Leiste / CSS in der Kopf- / Körperklasse

show_admin_bar(false);

oder wenn Sie nur möchten: Entfernen Sie htmlCSS am oberen Rand in<head>

function remove_admin_bar_bump() {
   remove_action('wp_head', '_admin_bar_bump_cb');
}
add_action('get_header', 'remove_admin_bar_bump');

Getestet: Version 4.7.3

l2aelba
quelle
0

Ich musste dies kürzlich tun. Ich wollte nur, dass die Standard-Inline-CSS-Stile von WordPress (für die Admin-Leiste) entfernt wurden, aber ich wollte, dass die Admin-Leiste erhalten bleibt. Ich habe die Admin-Leiste unten auf der Seite angezeigt, nicht oben.

Hier ist, was das Einfügen der Stile aus der _admin_bar_bump_cb-Funktion für mich beseitigt hat. Ich habe folgendes zu meiner functions.php hinzugefügt

// remove wordpress trying to style the admin bar with inline css
function hide_admin_bar_from_front_end(){
  remove_action( 'wp_head', '_admin_bar_bump_cb' );
  return true;
}
add_filter( 'show_admin_bar', 'hide_admin_bar_from_front_end' );
andxyz
quelle