WordPress管理バーがTwitterブートストラップナビゲーションと重なっている[終了]


10

WordPressの管理バーがTwitterブートストラップ(2.3.0)のナビゲーションバーと重なっているという問題があります。私はこの修正を試しました:

body.admin-bar .navbar-fixed-top {
    top: 28px;
}

.navbar .brand {
    color: #000 !important;
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 30px
        rgba(255, 255, 255, 0.125);
    font-weight: bold !important;
}

.nav-container {
    padding-left: 0;
    padding-right: 0;
}

.nav-tabs, .nav-pills {
    margin-top: -6px;
}

.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a
    {
    color: #fff !important;
}

#inner-header {
    width: 100%;
}

input,textarea,select,.uneditable-input {
    margin-bottom: 0;
}

.navbar-form,.navbar-search {
    margin: 0 0 9px;
}

.navbar-search {
    padding-left: 0;
}

#s {
    width: 100px;
}

しかし悲しいかな、それでも問題が提起されています。どのような修正が利用できるのでしょうか?

回答:


17

WordPress管理バーがTwitter Bootstrapナビゲーションバーと重ならないようにする方法。

への対応: WordPressアドミンバーのTwitterブートストラップナビゲーションの重複

質問者: @TheWebs

WordPressでTwitter Bootstrapを使用していて、WordPressの管理バーがナビゲーションバーと重なっている問題がある場合、おそらくこれらの回答のいくつかにかなり不満を感じています。私はどこにでも解決策を探しましたが、最終的にはより低いギアにシフトダウンして、自分が必要とすることを正確に実行する解決策を見つけることにしました。

したがって、WordPressの管理バーを非表示にしない、またはWordPressの管理バーをページの下部に移動しないという答えがあります。この回答は、WordPress管理バーを適切な場所に維持します...ページの上部。

これを完了するにはいくつかの短い手順が必要ですが、それだけの価値があることに注意してください。それは本当に複雑で時間のかかるプロセスではありません。その方法の説明が明確でわかりやすく、わかりやすいようにしたかっただけです。


ステップ1

テーマにはbodyタグのテンプレートタグがあり、テーマの作成者がCSSでより効果的にスタイルを設定するのに役立ちます。テンプレートタグはと呼ばれ body_classます。この関数はbody要素に異なるクラスを提供し、通常、header.phpHTMLのbodyタグに追加できます。

  1. Twitter Bootstrapディレクトリを使用して、現在アクティブなWordPressテーマを開きます。それを見つけheader.phpて開きます。
  2. 検索します <body>
  3. と置換する <?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>

上記の3つの手順を完了すると、WordPressのボディクラスでWordPressテーマを有効にすることができました。

ステップ2(オプション!)

  • <body>タグにカスタム条件付きCSSクラスを追加します。

body_class()またはget_body_class()関数を使用している場合、WordPressはデフォルトでHTMLタグにデフォルトクラスのリストを既に提供しています。

WordPress Webサイトでレンダリングされたフロントエンドページのソースコードを表示すると、HTML <body>タグに自動的に追加された2つのCSSクラスが「logged-in」と「admin-bar」であることがわかります。

また、これらのCSSクラス名は<body>、ユーザーがログインしている場合にのみHTML タグに追加され、そうでない場合はHTML <body>タグに追加されません。

したがって、デフォルトのWordPress CSSクラス名を使用したくない場合は、独自のクラス名を簡単に追加できます。

  1. Twitter Bootstrapディレクトリを使用して、現在アクティブなWordPressテーマを開きます。それを見つけfunctions.phpて開きます。
  2. add_filter('body_class', 'mbe_body_class');ファイルの先頭に追加します。
  3. 次のコードをファイルの下部に追加します。

コード:

function mbe_body_class($classes){
    if(is_user_logged_in()){
        $classes[] = 'body-logged-in';
    } else{
        $classes[] = 'body-logged-out';
    }
    return $classes;
}

ここで、WordPress Webサイトでレンダリングされたフロントエンドページのソースコードを表示すると、ユーザーがログインしている場合、「body-logged-in」がHTML <body>タグに追加されていることがわかります。ログアウトすると、「body-logged-out」がHTML <body>タグに追加されていることがわかります。

ステップ3

  • CSSコードをテーマに追加します。

これは、ユーザーがWebサイトにログインしているかログアウトしているかに関係なく、WordPress管理バーとTwitter Bootstrapナビゲーションの両方を正しく表示するようにテーマを修正するコードのセクションです。

  1. Twitter Bootstrapディレクトリを使用して、現在アクティブなWordPressテーマを開きます。それを見つけfunctions.phpて開きます。
  2. add_action('wp_head', 'mbe_wp_head');ファイルの先頭に追加します。
  3. 次のコードをファイルの下部に追加します。

コード:

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;
}

コードに編集

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;
}

このバージョンのmbe_wp_head関数には、モバイルファーストのメディアクエリが含まれており、ヘッダーが適切な距離に確実にプッシュされます。モバイルの場合、WP管理バーの高さは48ピクセルです。783pxのブレークポイントの後、管理バーは高さが28pxに短くなります。

そこにあります。ユーザーがログインしている場合は、ページの最上部にWordPress管理バーが表示され、すぐにTwitterブートストラップナビゲーションが表示されます。ユーザーがWordPress Webサイトからログアウトした場合でも、Twitter BootstrapナビゲーションはWebサイトの上部に適切に表示されます。


1
HTMLに埋め込むのではなく、CSSをたとえばstyle.cssに入れなかったのはなぜですか?よりエレガントなソリューションになります。また、あなたの仕事とアイデアをありがとう!
Max Ruf 2014年

@MaxRufその通りです。エンキューされたCSSファイルを個別にした方がよいでしょう。私はこの投稿を見つけた人々について考えていたので、簡単にコピー/貼り付けできました。問題が発生する可能性が低くなります。
Michael Ecklund、2016

25

うまくいきませんでしたが、良い修正を見つけました。header.phpで、wordpress関数を使用してツールバーが表示されているかどうかを照会し、navbar divの下に空のdivを作成します。

<div class="navbar navbar-inverse navbar-fixed-top">
<?php 
  // Fix menu overlap
  if ( is_admin_bar_showing() ) echo '<div style="min-height: 32px;"></div>'; 
?>
<div class="navbar-inner">

すばらしい修正。これは、受け入れられた回答よりもはるかに単純で、is_admin_bar_showing()ユーザーがログインしているだけでなく、誰かがログインしている可能性があることを考慮してが検索されるので、管理バーがオフになっているのが好きです。ありがとう!
Mark Rummel、2014年

3
WordPress 3.8以降、管理バーの高さは32pxです。
カウギル2014年

これは少しハッキーですが、これが最良の解決策であることがわかりました。賛成
plushyObject

3値論理とインラインスタイルを使用したわずかに変更されたソリューション:<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
Mark Rummel 2016

1
これは、モバイルデバイスでのオフセットが32pxではなく46pxである場合を除き、適切です。これを説明するために、スタイルではなくCSSクラスを使用しました。ここで適用することができクラスがあります:.fix_wp_overlap { min-height: 32px; } @media screen and (max-width: 782px) { .fix_wp_overlap { top: 46px !important; } }
surfbuds

3

あなたはこれを試すことができます:

   .navbar-fixed-top { top: 0px; }
    body.admin-bar .navbar-fixed-top { top: 28px !important; }

それが機能する場合は(正常に動作するはずです)、プラグインフォルダーまたはfunctions.phpファイルに以下のコードを挿入して、WP管理バーを一番下に移動する必要があります。

function fb_move_admin_bar() {
    echo '
    <style type="text/css">
    body { 
    margin-top: -28px;
    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>';
}
// on backend area
add_action( 'admin_head', 'fb_move_admin_bar' );
// on frontend area
add_action( 'wp_head', 'fb_move_admin_bar' );

別の方法として、このプラグインを使用できます

プラグインの使用はあまり好きではないので、ほとんどのテーマでは、必要のない偽のコードを使用してスクリプトをロードします...上記のソリューション1と2は正常に機能しますが、機能しない場合は、以下のソリューション3を試すことができます。

function stick_admin_bar_to_bottom_css() {
echo "

html {
padding-bottom: 28px !important;
}

body.admin-bar {
margin-top: -28px;
}

#wpadminbar {
top: auto !important;
bottom: 0;
}

#wpadminbar .quicklinks .menupop ul {
bottom: 28px;
}

";
}

add_action('admin_head', 'stick_admin_bar_to_bottom_css');
add_action('wp_head', 'stick_admin_bar_to_bottom_css');

28pxの問題がなくても、問題なく動作したようです。


2

これをbodyタグに追加するまで機能しませんでした。

<body <?php body_class(); ?>>

その後、うまくいきました!


0

パーフェクト!しかし、私が探していたものだけが、ステップ3で少し違ったことをしました。

    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;
}
add_action('wp_head', 'mbe_wp_head');

別の場所に追加することについておっしゃっていましたが、私はいつもこのようにしており、うまく機能しているようです。修正をありがとう!


1
そして、あなたは正確に何をしましたか?
カイザー2014年

0

Bootstrap 'navbar-fixed-top'の修正により、サイトメニューがWordPress管理メニューと重複しないようになりました

.admin-bar .navbar-fixed-top { top:46px; @media screen and (min-width:782px) { top:32px; } }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.