Thanh quản trị WordPress chồng chéo Twitter Bootstrap Navigation [đã đóng]


10

Tôi gặp sự cố với thanh quản trị WordPress chồng lên 2.3.0thanh điều hướng Twitter Bootstrap ( ). Tôi đã thử sửa lỗi này:

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

nhưng than ôi nó vẫn đang đặt ra một vấn đề. Tôi đang tự hỏi những gì sửa chữa có sẵn?

Câu trả lời:


17

Cách ngăn thanh quản trị WordPress trùng với thanh điều hướng Twitter Bootstrap của bạn.

Đáp lại: Thanh quản trị WordPress chồng lên điều hướng twitter bootstrap

Được hỏi bởi: @TheWebs

Nếu bạn đang sử dụng Twitter Bootstrap với WordPress và gặp sự cố với thanh quản trị WordPress chồng chéo với thanh điều hướng của bạn, có lẽ bạn khá thất vọng với một số câu trả lời này. Tôi đã tìm kiếm các giải pháp ở khắp mọi nơi trước khi quyết định chỉ chuyển sang một thiết bị thấp hơn và tìm ra một giải pháp thực hiện chính xác những gì tôi cần nó để làm.

Vì vậy, đây là một câu trả lời không ẩn thanh quản trị WordPress hoặc di chuyển thanh quản trị WordPress xuống cuối trang của bạn. Câu trả lời này sẽ giữ thanh quản trị WordPress ngay tại vị trí của nó ... Ở đầu trang của bạn.

Xin lưu ý rằng điều này sẽ mất một vài bước ngắn để hoàn thành, nhưng nó đáng giá. Nó không thực sự là một quá trình phức tạp hoặc tốn thời gian. Tôi chỉ muốn đảm bảo rằng lời giải thích về cách làm như vậy là rõ ràng và dễ làm theo / hiểu.


Bước 1

Chủ đề có thẻ mẫu cho thẻ body sẽ giúp tác giả chủ đề tạo kiểu hiệu quả hơn với CSS. Thẻ mẫu được gọi body_class. Hàm này cung cấp cho các thành phần cơ thể các lớp khác nhau và thường có thể được thêm vào trong header.phpthẻ thân HTML.

  1. Mở chủ đề WordPress hiện đang hoạt động của bạn bằng thư mục Twitter Bootstrap. Tìm header.phpvà mở nó.
  2. Tìm <body> .
  3. Thay bằng <?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>

Sau khi hoàn thành ba bước trên, giờ đây bạn đã kích hoạt thành công chủ đề WordPress của mình với các lớp cơ thể WordPress.

Bước 2 (TÙY CHỌN!)

  • Thêm các lớp CSS có điều kiện tùy chỉnh vào <body>thẻ.

Theo mặc định, WordPress đã cung cấp một danh sách các lớp mặc định cho thẻ HTML, nếu bạn đang sử dụng body_class()hoặc các get_body_class()hàm.

Nếu bạn xem mã nguồn của bất kỳ trang đầu cuối được hiển thị nào trên trang web WordPress của mình, bạn sẽ thấy hai trong số các lớp CSS được thêm tự động vào <body>thẻ HTML là "đăng nhập" và "thanh quản trị".

Bạn cũng sẽ nhận thấy các tên lớp CSS đó chỉ được thêm vào <body>thẻ HTML nếu người dùng đã đăng nhập, nếu không chúng sẽ không được thêm vào <body>thẻ HTML .

Vì vậy, nếu bạn không muốn sử dụng tên lớp CSS CSS mặc định, bạn có thể thêm tên của riêng bạn rất dễ dàng.

  1. Mở chủ đề WordPress hiện đang hoạt động của bạn bằng thư mục Twitter Bootstrap. Tìm functions.phpvà mở nó.
  2. Thêm add_filter('body_class', 'mbe_body_class'); vào đầu tập tin.
  3. Thêm mã sau đây, vào dưới cùng của tập tin.

Mật mã:

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

Bây giờ, nếu bạn xem mã nguồn của bất kỳ trang giao diện nào được hiển thị trên trang web WordPress của bạn, nếu người dùng đã đăng nhập, bạn sẽ thấy "đăng nhập cơ thể" đã được thêm vào <body>thẻ HTML và nếu người dùng là đăng xuất, bạn sẽ thấy "đăng xuất cơ thể" đã được thêm vào <body>thẻ HTML .

Bước 3

  • Thêm mã CSS vào chủ đề của bạn.

Đây là phần mã sẽ sửa chủ đề của bạn để hiển thị cả thanh quản trị WordPress và điều hướng Twitter Bootstrap của bạn, cho dù người dùng đã đăng nhập hay đăng xuất khỏi trang web của bạn.

  1. Mở chủ đề WordPress hiện đang hoạt động của bạn bằng thư mục Twitter Bootstrap. Tìm functions.phpvà mở nó.
  2. Thêm vào add_action('wp_head', 'mbe_wp_head'); vào đầu tập tin.
  3. Thêm vào mã sau đây, vào dưới cùng của tập tin.

Mật mã:

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

CHỈNH SỬA MÃ

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

Phiên bản này của hàm mbe_wp_head bao gồm truy vấn phương tiện di động đầu tiên, để đảm bảo rằng tiêu đề của bạn được đẩy xuống khoảng cách thích hợp. Đối với thiết bị di động, thanh quản trị WP cao 48px. Sau điểm dừng 783px, thanh quản trị rút ngắn xuống chỉ còn 28px.

Có bạn có nó. Nếu người dùng đã đăng nhập, bây giờ bạn sẽ có thanh quản trị viên WordPress ở đầu trang của bạn, ngay lập tức theo sau là điều hướng Twitter Bootstrapping của bạn. Nếu người dùng đã đăng xuất khỏi trang web WordPress của bạn, điều hướng Twitter Bootstrap của bạn vẫn sẽ hiển thị phù hợp ở đầu trang web của bạn.


1
Tại sao bạn không đặt css vào style.css, thay vì nhúng nó vào html? Nó sẽ là một giải pháp thanh lịch hơn. Cũng cảm ơn bạn cho công việc của bạn và ý tưởng!
Max Ruf

@MaxRuf Bạn hoàn toàn đúng. Tập tin CSS riêng biệt sẽ tốt hơn. Tôi chỉ nghĩ về những người tìm thấy bài đăng này, vì vậy họ có thể dễ dàng sao chép / dán. Ít gặp phải vấn đề.
Michael Ecklund

25

Không làm việc cho tôi, nhưng tôi tìm thấy một sửa chữa tốt đẹp. Trong tiêu đề.php của bạn, sử dụng chức năng wordpress để truy vấn nếu thanh công cụ được hiển thị, sau đó tạo một div trống bên dưới div thanh điều hướng:

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

Sửa chữa tuyệt vời. Tôi thích rằng điều này đơn giản hơn nhiều so với câu trả lời được chấp nhận và nó tìm kiếm is_admin_bar_showing(), không chỉ nếu người dùng đăng nhập, điều này tốt khi xem xét ai đó có thể đăng nhập, nhưng tắt thanh quản trị. Cảm ơn!
Mark Rummel

3
Kể từ WordPress 3.8, chiều cao thanh quản trị là 32px.
cowgill

Đây là một chút Hacky nhưng tôi đã thấy đây là giải pháp tốt nhất. Upvote
chicyObject

Giải pháp được sửa đổi một chút bằng cách sử dụng logic ternary và kiểu nội tuyến:<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
Mark Rummel

1
Điều này là tốt ngoại trừ trên một thiết bị di động, phần bù không phải là 32px mà là 46px. Để giải thích điều này, tôi đã sử dụng một lớp CSS thay vì một kiểu. Đây là lớp có thể được áp dụng:.fix_wp_overlap { min-height: 32px; } @media screen and (max-width: 782px) { .fix_wp_overlap { top: 46px !important; } }
Surfbud

3

bạn có thể thử điều này:

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

nếu điều đó phù hợp với bạn (cần phải như vậy!), thì bạn sẽ phải di chuyển thanh quản trị wp xuống phía dưới bằng cách dán mã bên dưới vào thư mục plugin hoặc tệp tin.php của bạn:

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

thay thế bạn có thể sử dụng plugin này

Tôi không thực sự thích sử dụng plugin vì hầu hết chủ đề tải tập lệnh của tôi với mã không có thật tôi không cần ... giải pháp 1 và 2 ở trên hoạt động tốt, nhưng nếu nó không hoạt động với bạn, bạn có thể thử giải pháp 3 bên dưới:

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

Điều đó dường như làm việc tốt với tôi mà không có vấn đề 28px ..


2

Nó không hoạt động với tôi cho đến khi tôi thêm nó vào thẻ body:

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

Sau đó, nó hoạt động tốt!


0

Hoàn hảo! Tuy nhiên, chỉ là những gì tôi đang tìm kiếm, tôi đã làm một cái gì đó hơi khác ở bước 3. Không chắc chắn rằng nó có vấn đề nhưng mã của tôi trông như thế này ...

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

Bạn đã đề cập đến việc thêm vào những nơi khác nhau, nhưng tôi đã luôn luôn làm nó như thế này và nó dường như chỉ hoạt động tốt. Cảm ơn đã sửa chữa!


1
Và chính xác những gì bạn đã làm khác nhau?
kaiser

0

Sửa lỗi cho Bootstrap 'navbar-fixed-top' để tránh chồng chéo trang web với menu quản trị viên WordPress

.admin-bar .navbar-fixed-top { top:46px; @media screen and (min-width:782px) { top:32px; } }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.