web-dev-qa-db-fra.com

Comment garder la disposition du thème identique lorsque la barre grise d'administration est présente?

Lorsque je suis connecté, il y a une barre grise d'administration en haut. La disposition de mon thème a été déformée par le bar. Comment résoudre le problème de mise en page? Existe-t-il une fonction permettant de détecter si un utilisateur est connecté ou non, ou si CSS peut résoudre le problème?

La démonstration du thème se trouve à: http://raptor.hk/dev/theme et ci-dessous, la capture d'écran lorsque la barre grise est présente.

p.s. J'utilise WordPress 3.2.1 & plugin Theme Test Drive

when the gray bar is present...

2
Raptor

La barre du haut de votre thème est également positionnée de manière absolue, elle ne sait donc pas descendre. Vous pouvez utiliser is_admin_bar_showing() pour vérifier si elle est affichée, puis j'injecterais probablement quelques styles en utilisant wp_head pour le réduire, car il s'agit très peu de CSS.

Tout compte fait, vous obtiendrez quelque chose dans le functions.php de votre thème comme:

add_action( 'wp_head', 'prefix_move_theme_down' );
function prefix_move_theme_down() {
  if ( is_admin_bar_showing() ) {
    ?>
    <style type="text/css">
    #header { top: 28px; }
    #content { margin-top: 68px; }
    </style>
    <?php
  }
}
2
helenhousandi

La barre d'administration ne s'affiche que si vous êtes connecté. Si vous ne l'aimez pas en haut, vous pouvez toujours le déplacer en bas. Ajoutez ceci au fichier functions.php de votre thème:

<?php
    function fb_move_admin_bar() {
    echo '
<style type="text/css">
    body {
    padding-bottom: 28px;
    }
    body.admin-bar #wphead {
       padding-top: 0;
    }
    body.admin-bar #footer {
       padding-bottom: 28px;
    }
    #wpadminbar {
        top: auto !important;
        bottom: 0;
    }
    #wpadminbar .quicklinks .menupop ul {
        bottom: 28px;
    }
</style>';
}
add_action( 'admin_head', 'fb_move_admin_bar' );
add_action( 'wp_head', 'fb_move_admin_bar' );
?>
2
Jeremy Jared

Pour masquer la barre d’administration, collez cette fonction dans function.php

    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' );
2
w3uiguru

Ajoutez ceci dans functions.php:

if ( is_admin_bar_showing() && !is_admin() )
    _admin_bar_bump_cb();

Ceci est le rappel par défaut pour la barre d'administration à partir de wp-includes/admin-bar.php:

function _admin_bar_bump_cb() { ?>
<style type="text/css" media="screen">
    html { margin-top: 28px !important; }
    * html body { margin-top: 28px !important; }
</style>
<?php
}
0
Nkoyan

Il semble que pendant que les autres réponses fonctionnent, la façon propre et prévue de le faire selon WordPress Core Code est la suivante:

add_action( 'after_setup_theme', function(){
   add_theme_support( 'admin-bar', array( 'callback' => '__return_false' ) );
} );
0
kraftner