Bidang Login/Logout di bilah menu tidak pada tempatnya dan tidak berfungsi (Wordpress)

Dua hari terakhir saya telah mencoba mempelajari cara menambahkan bidang login/logout/daftar yang bagus ke bilah menu atas situs saya. Saya baru saja mulai membiasakan diri dengan editor. Saya menggali kode ini di sini di stackoverflow. Saya suka tampilannya dan saya berharap untuk mengubahnya sedikit.

    /* Custom Login Menu Field */
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) {
// start buffering
ob_start();
// this is the actual form function
wp_login_form($args); // $args optional see below ..
// get buffering
$loginoutform = ob_get_contents();
// clean buffering
ob_end_clean();
$items .= $loginoutform ; // concatenate buffering with items ...
return $items;
}

Yang ingin saya lakukan adalah menempatkan area kolom login secara horizontal di tengah bilah menu atas/utama. Seperti yang Anda lihat, saat ini ia berada jauh ke kanan dan membentangkan semuanya. Saat saya menggunakannya- ia memasukkan saya, tetapi tidak beralih ke opsi "keluar" saat masuk.

Jika ada yang mempunyai pengetahuan di bidang ini tentang bagaimana saya dapat menambah atau memodifikasi kode awal saya, saya akan sangat berterima kasih. Hormat kami- Cypher.

Situs: cypherbeats.com Tema: Jarvis (terbaru) Kode telah ditambahkan ke function.php


person Cypher    schedule 03.01.2016    source sumber


Jawaban (1)


Pada saat penulisan, saya tidak dapat melihat bilah login yang Anda bicarakan. Jadi tidak bisa mengatakan apakah kode Anda berfungsi.

Dalam kode Anda, Anda dapat menggunakan fungsi is_user_logged_in() sebagai syarat untuk memeriksa apakah pengunjung sudah login. Oleh karena itu, Anda dapat menggunakannya untuk memutuskan apakah akan menampilkan kode login atau logout. Fungsi wp_loginout() muncul untuk menampilkan tombol logout. Jadi sesuatu seperti ini bisa berhasil:

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) {
// start buffering
ob_start();
// this is the actual form function
if( !is_user_logged_in() )
    wp_login_form($args); // $args optional see below ..
else
    wp_loginout();
// get buffering
$loginoutform = ob_get_contents();
// clean buffering
ob_end_clean();
$items .= $loginoutform ; // concatenate buffering with items ...
return $items;
}

Peringatan Saya belum mengujinya dan ini hanyalah saran untuk memulai.

Berikut adalah pendekatan alternatif yang mungkin berguna. Instal dulu plugin ini: https://wordpress.org/plugins/nav-menu-roles/ Kemudian buatlah link login yang hanya dapat dilihat oleh pengguna yang logout dan link logout yang hanya dapat dilihat oleh pengguna yang login. Anda kemudian dapat menulis beberapa javascript yang menyebabkan formulir login muncul di lightbox ketika Anda menekan tombol login. Saya menggunakan pendekatan ini di https://ptofchoice.com.au/

person James Jones    schedule 03.01.2016
comment
Terima kasih atas tanggapan Anda! Saya sangat menghargai Anda meluangkan waktu untuk membantu saya. Dan maaf karena tidak ada di sana saat Anda memeriksanya. Saya menambahkan beberapa kode sendiri dan menyebabkan kesalahan fatal di seluruh wordpress saya dan harus memulihkan cadangan.. lol. Saya akan mencoba informasi Anda dan akan segera merespons dengan hasilnya. - person Cypher; 03.01.2016
comment
Peralihan untuk menampilkan logout berhasil :) Sekali lagi menu dibentangkan ke bawah untuk menampilkan formulir, dan setelah login, opsi logout muncul di sebelah opsi menu dukungan saya. Sayangnya saya tidak cukup berpengetahuan untuk merekatkan ide ini menjadi sebuah fungsi kerja yang sempurna. Saya sudah memeriksa situs Anda dan saya harus mengatakan bahwa saya menyukai tampilannya. Pastinya akan menjadi pendekatan yang lebih baik bagi saya, tetapi saya keras kepala dan tidak ingin menyerah dalam hal ini. - Selain itu, saya akan membiarkan kode login ini untuk saat ini sehingga Anda dapat melihat kembali apa yang terjadi. - person Cypher; 03.01.2016
comment
Pada dasarnya Anda mencoba menjadikan login sebagai bagian dari menu. Karena Anda memposisikan formulir login di tengah, mungkin lebih mudah untuk menampilkan kode tempat Anda membuat header. Membuat formulir terlihat bagus benar-benar merupakan masalah tersendiri dalam membuatnya berfungsi - person James Jones; 03.01.2016
comment
Ya, Saya rasa saya tidak keberatan dengan tampilannya yang bagus untuk saat ini ^-^ Header.php saya tidak menghasilkan apa pun jadi saya mencoba menu_section.php saya hanya bermain-main dan kode ditempatkan sendiri tertulis di tengah menu ketika saya menyegarkan beranda (malu) Tapi setidaknya itu memberi saya petunjuk. Saya ingin menunjukkan kepada Anda kode menu_section saya untuk melihat apakah Anda dapat menemukan tempat yang cocok untuk saya tambahkan ke dalam kode login saya. Bisakah saya menempelkannya ke komentar di sini? - person Cypher; 03.01.2016
comment
Saya menyarankan Anda sebaiknya membuat pertanyaan baru dan memposting tautan. Formulir login Anda tidak akan menjadi bagian dari menu. Saya sangat menyarankan untuk tidak memasukkannya ke dalam kode menu apa pun - person James Jones; 03.01.2016
comment
Terima kasih atas jawaban yang ditandai! Saat Anda memposting pertanyaan lain, pastikan untuk menyertakan beberapa kode header.php. Saya harus tidur jadi tidak akan bisa menyerangnya selama sekitar 10 jam - person James Jones; 03.01.2016
comment
Hei tidak masalah. Saya sangat berterima kasih atas bantuan Anda. Sulit untuk memikirkan segala hal sehingga seseorang yang meluangkan waktu untuk membantu saya belajar adalah hal yang luar biasa. Berikut postingan lanjutannya: stackoverflow.com/questions/34578323/ - person Cypher; 03.01.2016