WordPress Admin Bar, що перекривається навігацією завантажувального пристрою Twitter [закрито]


10

У мене виникають проблеми з адміністративною панеллю WordPress, що перекриває 2.3.0навігаційну панель Twitter Bootstrap ( ). Я спробував це виправлення:

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 перекриває навігацію завантажувального твітера

На запитання: @TheWebs

Якщо ви використовуєте Twitter Bootstrap з WordPress і маєте проблеми з панеллю адміністрування WordPress, що перекривається з вашою панеллю навігації, ви, мабуть, досить засмучені деякими з цих відповідей. Я шукав рішення скрізь, перш ніж врешті-решт вирішив просто переключитися на нижчу передачу і придумав рішення, яке робить саме те, що мені потрібно для цього.

Отож ось відповідь, яка не приховує панель адміністрування WordPress, або перемістіть панель адміністрування WordPress внизу ваших сторінок. Ця відповідь збереже панель адміністрування WordPress там, де вона належить ... У верхній частині ваших сторінок.

Зверніть увагу: для виконання цього знадобиться кілька коротких кроків, але воно того варте. Це насправді не складний або трудомісткий процес. Я просто хотів, щоб пояснення, як це зробити, було зрозумілим і легким для дотримання / розуміння.


Крок 1

У темах є тег шаблону для тегу body, який допоможе авторам тем краще стилізувати CSS. Викликається тег шаблону body_class. Ця функція дає елементу тіла різні класи і може бути додана, як правило, у header.phpтег HTML HTML.

  1. Відкрийте поточно активну тему WordPress за допомогою каталогу завантаження програми Twitter. Знайдіть header.phpі відкрийте.
  2. Знайдіть <body> .
  3. Замінити <?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>

Виконавши три кроки вище, ви успішно включили свою тему WordPress за допомогою занять WordPress.

Крок 2 (ОПЦІЙНО!)

  • Додайте до <body>тегу власні умовні класи CSS .

За замовчуванням WordPress вже надає список класів за замовчуванням до тегу HTML, якщо ви використовуєте функції body_class()або get_body_class().

Якщо ви переглядаєте вихідний код будь-якої наданої передньої сторінки на своєму веб-сайті WordPress, ви помітите два класи CSS, які автоматично додаються до <body>тегу HTML, - це "вхід у систему" та "панель адміністратора".

Ви також помітите, що імена класів CSS додаються до <body>тегу HTML лише тоді, коли користувач увійшов у систему, інакше вони не будуть додані до <body>тегу HTML .

Тож якщо ви не хочете використовувати за замовчуванням імена класів WordPress CSS, ви можете додати свої власні дуже легко.

  1. Відкрийте поточно активну тему WordPress за допомогою каталогу завантаження програми Twitter. Знайдіть 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, якщо користувач увійшов у систему, ви побачите, що "body-logged" було додано до <body>тегу HTML , а якщо користувач - Вийшовши з системи, ви побачите, що " <body>тег -вихід із системи" доданий до тегу HTML .

Крок 3

  • Додайте CSS-код до своєї теми.

Це розділ коду, який виправить вашу тему для відображення як адміністративної панелі WordPress, так і належної навігації у Twitter Bootstrap, незалежно від того, чи користувач увійшов або вийшов з вашого веб-сайту.

  1. Відкрийте поточно активну тему WordPress за допомогою каталогу завантаження програми Twitter. Знайдіть 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 Bootstrapped. Якщо користувач вийшов із вашого веб-сайту WordPress, навігація у вашому Twitter Bootstrap все одно повинна відображатися належним чином у верхній частині вашого веб-сайту.


1
Чому, наприклад, ви не поставили css у style.css, замість того, щоб вставити його в html? Це було б більш елегантне рішення. Також дякую за вашу роботу та ідею!
Макс Руф

@MaxRuf Ви абсолютно праві. Окремий інтегрований CSS-файл буде краще. Я просто думав про людей, які знайшли цю посаду, щоб вони могли просто просто скопіювати / вставити. Рідше виникають проблеми.
Майкл Еклунд

25

Мені не вийшло, але я знайшов гарне виправлення. У своєму header.php використовуйте функцію wordpress, щоб запитати, чи відображається панель інструментів, а потім створити порожній div під назвою divbar:

<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(), не тільки якщо користувач увійшов у систему, що добре, враховуючи, що хтось може увійти, але вимкнено панель адміністратора. Дякую!
Марк Руммель

3
Станом на WordPress 3.8, висота панелі адміністратора - 32 пікселів.
cowgill

Це трохи Хаккі, але я знайшов це найкращим рішенням. Upvoted
plushyObject

Трохи модифіковане рішення, використовуючи потрійну логіку та стиль вбудованого тексту:<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
Марк Руммель

1
Це добре, за винятком того, що на мобільному пристрої зміщення не 32 пікселя, а 46 пікселів. Для обліку цього я використовував клас 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; }

якщо це працює для вас (що це повинно бути!), тоді вам доведеться перемістити панель wp-адміністрування донизу, вставивши код нижче в папку плагінів або файл function.php:

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
А що саме ти робив по-різному?
кайзер

0

Виправити Bootstrap 'navbar-fix-top', щоб запобігти збігу меню сайту з адміністратором WordPress

.admin-bar .navbar-fixed-top { top:46px; @media screen and (min-width:782px) { top:32px; } }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.