WordPress Yönetici Çubuğu Çakışan Twitter Önyükleme Gezintisi [kapalı]


10

WordPress yönetici çubuğunda Twitter Bootstrap ( 2.3.0) gezinme çubuğuyla çakışan bir sorun yaşıyorum . Bu düzeltmeyi denedim:

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

ama ne yazık ki hala bir sorun teşkil ediyor. Hangi düzeltmelerin mevcut olduğunu merak ediyorum?

Yanıtlar:


17

WordPress yönetici çubuğunun Twitter Bootstrap gezinme çubuğunuzla çakışmasını önleme.

Yanıt olarak: WordPress yönetici çubuğu çakışan twitter bootstrap navigasyonu

Sordu: @TheWebs

WordPress ile Twitter Bootstrap kullanıyorsanız ve gezinme çubuğunuzla çakışan WordPress yönetici çubuğuyla ilgili bir sorununuz varsa, muhtemelen bu cevapların bazılarından oldukça sinirli olursunuz. Nihayetinde daha düşük bir vitese geçmeye karar vermeden önce her yerde çözüm aradım ve tam olarak yapmam gereken şeyi yapan bir çözüm buldum.

İşte WordPress yönetici çubuğunu gizlemeyen veya WordPress yönetici çubuğunu sayfalarınızın altına taşımayan bir yanıt. Bu yanıt WordPress yönetici çubuğunu ait olduğu yerde tutacaktır ... Sayfalarınızın üstünde.

Bunun tamamlanması için birkaç kısa adım alacağını lütfen unutmayın, ancak buna değer. Gerçekten karmaşık veya zaman alıcı bir süreç değil. Sadece bunun nasıl yapılacağına dair açıklamanın takip edilmesi ve anlaşılması kolay olduğundan emin olmak istedim.


Aşama 1

Temalarda gövde etiketi için tema yazarlarının CSS ile daha etkili bir şekilde stil oluşturmalarına yardımcı olacak bir şablon etiketi vardır. Şablon Etiketi denir body_class. Bu işlev gövde elemanına farklı sınıflar verir ve genellikle header.phpHTML gövde etiketine eklenebilir .

  1. Şu anda etkin WordPress temanızı Twitter Bootstrap dizinini kullanarak açın . Bulun header.phpve açın.
  2. Bul <body> .
  3. Şununla değiştir <?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>

Yukarıdaki üç adımı tamamladıktan sonra, WordPress temanızı WordPress gövde sınıflarıyla başarıyla etkinleştirdiniz.

Adım 2 (İSTEĞE BAĞLI!)

  • <body>Etikete özel koşullu CSS sınıfları ekleyin .

Varsayılan olarak, body_class()veya get_body_class()işlevlerini kullanıyorsanız WordPress zaten HTML etiketine varsayılan sınıfların bir listesini sağlar .

WordPress web sitenizde oluşturulmuş herhangi bir ön uç sayfanın kaynak kodunu görüntülerseniz, HTML <body>etiketine otomatik olarak eklenen CSS sınıflarından ikisinin "oturum açıldı " ve "yönetici çubuğu" olduğunu göreceksiniz .

Ayrıca, CSS sınıf adlarının HTML <body>etiketine yalnızca kullanıcı oturum açtıysa eklendiğini fark edersiniz , aksi takdirde HTML <body>etiketine eklenmezler .

Dolayısıyla, varsayılan WordPress CSS sınıf adlarını kullanmak istemiyorsanız, kendinizinkini kolayca ekleyebilirsiniz.

  1. Şu anda etkin WordPress temanızı Twitter Bootstrap dizinini kullanarak açın . Bulun functions.phpve açın.
  2. add_filter('body_class', 'mbe_body_class');Dosyanın en üstüne ekleyin .
  3. Aşağıdaki kodu dosyanın altına ekleyin .

Kod:

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

Şimdi, WordPress web sitenizde oluşturulmuş herhangi bir ön uç sayfanın kaynak kodunu görüntülerseniz, kullanıcı oturum açtıysa, HTML <body>etiketine "gövde oturum açıldı" ifadesinin eklendiğini ve kullanıcı oturumu kapattıysanız, HTML gövdesine "gövde oturumu kapatıldı" ifadesinin eklendiğini göreceksiniz <body>.

Aşama 3

  • CSS kodunu temanıza ekleyin.

Bu, kullanıcının web sitenizde oturum açmış veya oturumu kapatmış olsun, temanızı hem WordPress yönetici çubuğunu hem de Twitter Bootstrap gezinmenizi düzgün bir şekilde görüntüleyecek şekilde düzelten bölümdür.

  1. Şu anda etkin WordPress temanızı Twitter Bootstrap dizinini kullanarak açın . Bulun functions.phpve açın.
  2. add_action('wp_head', 'mbe_wp_head');Dosyanın en üstüne ekleyin .
  3. Aşağıdaki kodu dosyanın altına ekleyin .

Kod:

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

KODU DÜZENLE

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 işlevinin bu sürümü, başlığınızın uygun mesafeyi aşağı itmesini sağlamak için önce mobil ortam sorgusu içerir. Mobil cihazlar için WP yönetici çubuğu 48 piksel uzunluğundadır. 783 piksel kesme noktasından sonra, yönetici çubuğu yalnızca 28 piksel yüksekliğe kısalır.

İşte aldın. Kullanıcı oturum açtıysa, artık sayfanızın en üstünde WordPress yönetici çubuğuna ve hemen ardından Twitter Bootstrapped navigasyonuna sahip olmalısınız. Kullanıcı WordPress web sitenizden çıkış yaptıysa, Twitter Bootstrap navigasyonunuz yine de web sitenizin üstünde uygun şekilde görüntülenmelidir.


1
Neden css'yi html'ye gömmek yerine style.css dosyasına yerleştirmediniz? Daha zarif bir çözüm olurdu. Ayrıca çalışmalarınız ve fikirleriniz için teşekkür ederiz!
Max Ruf

@MaxRuf Kesinlikle haklısın. Ayrı ayrı CSS dosyası daha iyi olurdu. Sadece bu yazıyı bulan insanları düşünüyordum, bu yüzden kolayca kopyalayıp yapıştırabilirlerdi. Sorunlarla karşılaşma olasılığı daha azdır.
Michael Ecklund

25

Benim için çalışmadı, ama güzel bir düzeltme buldum. Header.php dosyasında, araç çubuğunun görüntülenip görüntülenmediğini sorgulamak için wordpress işlevini kullanın ve navbar div'ın altında boş bir div oluşturun:

<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">

Harika bir düzeltme. Bu, kabul edilen cevaptan çok daha basit ve is_admin_bar_showing()sadece kullanıcı oturum açmışsa değil, birinin oturum açmış olabileceğini düşünerek iyi olduğunu, ancak yönetici çubuğunu kapattığını görünüyor. Teşekkürler!
Mark Rummel

3
WordPress 3.8'den itibaren, yönetici çubuğu yüksekliği 32 pikseldir.
Cowgill

Bu biraz Hacky ama bunu en iyi çözüm olarak buldum. Upvoted
plushyObject

Üçlü mantık ve satır içi stili kullanarak biraz değiştirilmiş çözüm:<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
Mark Rummel

1
Bu, bir mobil cihazda ofset 32 ​​piksel değil 46 piksel hariç iyidir. Bunu açıklamak için bir stil yerine bir CSS sınıfı kullandım. Uygulanabilecek sınıf şu .fix_wp_overlap { min-height: 32px; } @media screen and (max-width: 782px) { .fix_wp_overlap { top: 46px !important; } }
şekildedir

3

bunu deneyebilirsiniz:

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

bu sizin için işe yarıyorsa (ki gerekir!), aşağıdaki kodu bir eklenti klasörüne veya function.php dosyasına yapıştırarak wp yönetici çubuğunu aşağıya taşımanız gerekir:

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

alternatif olarak bu eklentiyi kullanabilirsiniz

i çoğu eklentileri kullanmayı sevmiyorum çünkü tema çoğu benim sahte kodlar ile benim kod yüklemek ... yukarıdaki çözüm 1 ve 2 iyi çalışıyor, ama sizin için işe yaramazsa, aşağıdaki çözüm 3 deneyebilirsiniz:

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

Bu 28px sorunları olmadan benim için iyi görünüyordu.


2

Bunu vücut etiketine ekleyene kadar benim için işe yaramadı:

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

Sonra iyi çalıştı!


0

Mükemmel! Ne aradığını, ancak, adım 3'te biraz farklı bir şey yaptım. Önemli olduğundan emin değilim ama kodum böyle görünüyor ...

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

Farklı yerlere eklemekten bahsettiniz, ama her zaman böyle yaptım ve gayet iyi çalışıyor gibi görünüyor. Düzeltme için teşekkürler!


1
Peki tam olarak ne yaptın?
kaiser

0

Site menüsünün WordPress yönetici menüsü ile çakışmasını önlemek için Bootstrap 'navbar-fixed-top' düzeltildi

.admin-bar .navbar-fixed-top { top:46px; @media screen and (min-width:782px) { top:32px; } }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.