Menanggapi: Admin bar WordPress tumpang tindih navigasi bootstrap twitter
Ditanyakan oleh: @TheWebs
Jika Anda menggunakan Twitter Bootstrap dengan WordPress dan memiliki masalah dengan bilah admin WordPress yang tumpang tindih dengan bilah navigasi Anda, Anda mungkin cukup frustrasi dengan beberapa jawaban ini. Saya mencari solusi di mana-mana sebelum akhirnya memutuskan untuk beralih ke gigi yang lebih rendah dan mencari solusi yang melakukan apa yang saya butuhkan.
Jadi, inilah jawaban yang tidak menyembunyikan bilah admin WordPress, atau memindahkan bilah admin WordPress ke bagian bawah halaman Anda. Jawaban ini akan membuat bar admin WordPress tetap di tempatnya ... Di bagian atas halaman Anda.
Harap dicatat bahwa ini akan mengambil beberapa langkah singkat untuk diselesaikan, tetapi itu sepadan. Ini bukan proses yang rumit atau memakan waktu. Saya hanya ingin memastikan bahwa penjelasannya jelas dan mudah diikuti / dimengerti.
Langkah 1
Tema memiliki tag template untuk tag tubuh yang akan membantu penulis tema untuk mendesain lebih efektif dengan CSS. Tag Templat disebut
body_class
. Fungsi ini memberikan elemen tubuh kelas yang berbeda dan dapat ditambahkan, biasanya, dalam header.php
tag tubuh HTML.
- Buka tema WordPress Anda yang sedang aktif menggunakan direktori Twitter Bootstrap. Temukan
header.php
dan buka.
- Temukan
<body>
.
- Ubah dengan
<?php echo '<body class="'.join(' ', get_body_class()).'">'.PHP_EOL; ?>
Setelah menyelesaikan tiga langkah di atas, Anda sekarang telah berhasil mengaktifkan tema WordPress Anda dengan kelas tubuh WordPress.
Langkah 2 (OPTIONAL!)
- Tambahkan kelas CSS khusus bersyarat ke
<body>
tag.
Secara default, WordPress sudah menyediakan daftar kelas default untuk tag HTML, jika Anda menggunakan body_class()
atau get_body_class()
fungsinya.
Jika Anda melihat kode sumber dari setiap halaman depan yang dirender di situs WordPress Anda, Anda akan melihat dua kelas CSS yang secara otomatis ditambahkan ke <body>
tag HTML adalah "login" dan "admin-bar".
Anda juga akan melihat bahwa nama-nama kelas CSS hanya ditambahkan ke <body>
tag HTML jika pengguna masuk, jika tidak mereka tidak akan ditambahkan ke <body>
tag HTML .
Jadi jika Anda tidak ingin menggunakan nama kelas WordPress CSS default, Anda dapat menambahkan sendiri dengan sangat mudah.
- Buka tema WordPress Anda yang sedang aktif menggunakan direktori Twitter Bootstrap. Temukan
functions.php
dan buka.
- Tambahkan
add_filter('body_class', 'mbe_body_class');
ke bagian atas file.
- Tambahkan kode berikut, ke bagian bawah file.
Kode:
function mbe_body_class($classes){
if(is_user_logged_in()){
$classes[] = 'body-logged-in';
} else{
$classes[] = 'body-logged-out';
}
return $classes;
}
Sekarang, jika Anda melihat kode sumber dari setiap halaman front-end yang dirender di situs web WordPress Anda, jika pengguna masuk, Anda akan melihat "tubuh-masuk" telah ditambahkan ke <body>
tag HTML , dan jika pengguna logout, Anda akan melihat "body-log-out" telah ditambahkan ke <body>
tag HTML .
Langkah 3
- Tambahkan kode CSS ke tema Anda.
Ini adalah bagian dari kode yang akan memperbaiki tema Anda untuk menampilkan bar admin WordPress, dan navigasi Bootstrap Twitter Anda dengan benar, apakah pengguna masuk atau keluar dari situs web Anda.
- Buka tema WordPress Anda yang sedang aktif menggunakan direktori Twitter Bootstrap. Temukan
functions.php
dan buka.
- Tambahkan
add_action('wp_head', 'mbe_wp_head');
ke bagian atas file.
- Tambahkan kode berikut, ke bagian bawah file.
Kode:
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;
}
Sunting ke kode
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;
}
Versi fungsi mbe_wp_head ini mencakup kueri media pertama-seluler, untuk memastikan bahwa tajuk Anda didorong ke bawah dengan jarak yang tepat. Untuk seluler, bilah admin WP tingginya 48px. Setelah breakpoint 783px, bar admin memendek menjadi hanya 28px.
Itu dia. Jika pengguna masuk, Anda sekarang harus memiliki bar admin WordPress di bagian paling atas halaman Anda, segera diikuti oleh navigasi Bootstrapped Twitter Anda. Jika pengguna keluar dari situs WordPress Anda, navigasi Bootstrap Twitter Anda masih harus ditampilkan dengan tepat di bagian atas situs web Anda.
Tidak bekerja untuk saya, tetapi saya menemukan perbaikan yang bagus. Di header.php Anda gunakan fungsi wordpress untuk meminta jika bilah alat ditampilkan, dan kemudian buat div kosong di bawah div navbar:
sumber
is_admin_bar_showing()
dicari, bukan hanya jika pengguna masuk, yang bagus mengingat seseorang mungkin masuk, tetapi mematikan bilah admin. Terima kasih!<nav class="navbar navbar-default navbar-fixed-top"<?php echo (is_admin_bar_showing()) ? ' style="top: 32px;"' : ''; ?>>
.fix_wp_overlap { min-height: 32px; } @media screen and (max-width: 782px) { .fix_wp_overlap { top: 46px !important; } }
Anda dapat mencoba ini:
jika itu bekerja untuk Anda (yang seharusnya!), maka Anda harus memindahkan bar admin wp ke bawah dengan menempelkan kode di bawah ini ke folder plugins atau file functions.php Anda:
sebagai alternatif, Anda dapat menggunakan plugin ini
saya tidak terlalu suka menggunakan plugin karena sebagian besar tema memuat skrip saya dengan kode palsu saya tidak perlu ... solusi 1 dan 2 di atas berfungsi dengan baik, tetapi jika itu tidak berhasil untuk Anda, Anda dapat mencoba solusi 3 di bawah ini:
Itu tampaknya bekerja untuk saya baik-baik saja tanpa masalah 28px ..
sumber
Itu tidak berfungsi untuk saya sampai saya menambahkan ini ke tag tubuh:
Kemudian itu bekerja dengan baik!
sumber
Sempurna! Hanya apa yang saya cari, bagaimanapun, saya melakukan sesuatu yang sedikit berbeda pada langkah 3. Tidak yakin itu penting tetapi kode saya terlihat seperti ini ...
Anda sebutkan menambahkan di tempat yang berbeda, tetapi saya selalu melakukannya seperti ini dan tampaknya berfungsi dengan baik. Terima kasih untuk perbaikannya!
sumber
Perbaiki untuk Bootstrap 'navbar-fixed-top' untuk mencegah tumpang tindih menu situs dengan menu admin WordPress
sumber