Tambahkan tautan "Logout" ke menu navigasi

16

Bagaimana saya bisa menambahkan tautan ke menu navigasi utama dengan class="right"atribut?

Saya mencoba menambahkan tautan statis ke example.com/wp-logout.php?action=logouttetapi itu mengarah ke halaman konfirmasi logout. Apakah ada cara untuk membuatnya menjadi tautan logout?

Zach Russell
sumber
1
Pernahkah Anda melihat pertanyaan dan jawaban yang ada seperti ini ?
fuxia
Pernahkah Anda melihat wp_loginout()?
kaiser
2
Saya telah menghapus jawaban yang diterima, karena dijiplak dari situs ini tanpa atribusi.
fuxia
Saya akhirnya menggunakan sesuatu yang serupa; setidaknya menggunakan fungsi loginout (). Saya akan memposting persis apa yang saya lakukan waktu berikutnya saya berada di depan komputer saya. Terima kasih @toscho
Zach Russell
Anda dapat menggunakan plugin gratis ini wordpress.org/plugins/login-logout-register-menu untuk mencapai hal yang sama dengan mudah.
Vinod Dalvi

Jawaban:

39

Anda dapat mencapai ini menggunakan wp_nav_menu_itemskail. Mari kita lihat bagian kode berikut yang menunjukkan tautan masuk / keluar pada primarylokasi menu.

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

function wti_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == 'primary') {
      if (is_user_logged_in()) {
         $items .= '<li class="right"><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
      }
   }
   return $items;
}

Inilah yang telah kami terapkan dalam contoh di atas.

  1. Pertama menambahkan filter untuk wp_nav_menu_itemspengait dan melampirkan fungsi untuk itu.
  2. Setelah memeriksa primarylokasi tema, kami telah memeriksa apakah pengguna masuk atau tidak.
  3. Jika masuk, kami telah menunjukkan Log Outtautan sebaliknya Log In tautan tersebut.
  4. Kami telah melewati permalink halaman yang sedang dilihat ke url login sehingga pengguna akan diarahkan ke halaman saat ini setelah login berhasil.
  5. Kami telah menggunakan class="right"kode di atas untuk memenuhi kebutuhan Anda.

Anda dapat menemukan penjelasan terperinci di blog ini .

Chittaranjan
sumber
@ timo-s Dalam Dua puluh Seventeen (anak) tema ini akan bekerja hanya dengan toplokasi menu: if ($args->theme_location == 'top').
Iurie Malai
lokasi harus bagi sayaprimary-menu
Toskan
2

Coba tambahkan tautan khusus dengan http://example.com/wp-login.php?action=logout Ini berhasil untuk saya!

Marcelo Oliveira
sumber
1
Ini memberi pengguna dengan "Anda yakin ingin keluar?" cepat, karena fakta bahwa nonce hilang.
cale_b
0

Menu footer saya adalah widget , oleh karena itu saya mengalami kesulitan menggunakan kode oleh Chittaranjan. Versi yang diedit berikut ini berfungsi untuk saya. Saya juga mengubah tautan dan menjadikannya "dinamis": login mengarah ke halaman pilihan Anda, logout akan tetap berada di halaman saat ini, atau mengirim ke rumah, jika halaman saat ini adalah halaman login (pribadi) Anda. Idealnya itu akan memeriksa apakah halaman login Anda benar-benar pribadi, tetapi saya tidak tahu bagaimana melakukannya, maaf.

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

function wti_loginout_menu_link( $items, $args ) {
    //var_dump($args);
    if (($args->menu->slug == 'footer')) {
        if (is_user_logged_in()) {
            $loginlink = '/your-private-page';
            $logoutlink = get_permalink();
            if (strpos($logoutlink, $loginlink) !== false) {
                $logoutlink = '/';
            }
            $items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Log Out") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
        }
    }
    return $items;
}
Ralf
sumber
-2
add_filter( 'wp_nav_menu_items', 'add_loginout_link', 15, 5 );

function add_loginout_link( $menus, $args ) {

  if (is_user_logged_in() && $args->theme_location == 'primary') {

   $menus .= '<li><a href="'. wp_logout_url( get_permalink( woocommerce_get_page_id( 'myaccount' ) ) ) .'">Log Out</a></li>';
    }

  elseif (!is_user_logged_in() && $args->theme_location == 'primary') {

   $menus .= '<li><a href="' . get_permalink( woocommerce_get_page_id( 'myaccount' ) ) . '">Log In</a></li>';
  }

  return $menus;
}
Ankush Samyal
sumber
Anda perlu memformat kode Anda menggunakan 4 spasi di awal setiap baris (lihat bantuan).
Peter HvD
Harap jangan mengiklankan situs web Anda. Harap edit jawaban Anda dengan penjelasan tentang bagaimana blok kode ini menjawab pertanyaan yang ada, di mana menambahkannya, dan apa yang dikerjakannya.
Howdy_McGee