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?


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 .


@ 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


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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.