Gezinme menüsüne "Çıkış" bağlantısı ekle


16

İle birincil gezinme menüsüne nasıl bağlantı ekleyebilirim? class="right" ?

Statik bir bağlantı eklemeye çalıştım, example.com/wp-logout.php?action=logoutancak bu bir çıkış onay sayfasına yönlendiriyor. Oturumu kapatma bağlantısı yapmanın herhangi bir yolu var mı?


1
Eğer gibi sorular ve cevapları mevcut gördünüz mü bu bir ?
fuxia

Gördün wp_loginout()
kaiser

2
Kabul edilen cevabı kaldırdım, çünkü atıfta bulunulmadan bu siteden intihal edildi .
fuxia

Sonunda benzer bir şey kullandım; en azından loginout () işlevini kullanarak. Bilgisayarımın önünde bir dahaki sefere yaptığım şeyi tam olarak yayınlayacağım. Teşekkürler @toscho
Zach Russell

Bunu kolayca elde etmek için bu ücretsiz eklentiyi wordpress.org/plugins/login-logout-register-menu kullanabilirsiniz.
Vinod Dalvi

Yanıtlar:


39

Bunu wp_nav_menu_itemskanca kullanarak yapabilirsiniz . primaryMenü konumunda giriş / çıkış bağlantısını gösteren aşağıdaki kod parçasına bir göz atalım .

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

Yukarıdaki örnekte uyguladıklarımız budur.

  1. Önce wp_nav_menu_itemskanca için bir filtre ekledi ve ona bir işlev ekledi .
  2. primaryTema konumunu kontrol ettikten sonra kullanıcının oturum açıp açmadığını kontrol ettik.
  3. Giriş yaptıysanız, Log Outbağlantıyı, aksi takdirde bağlantıyı gösterdik Log In .
  4. Şu anda görüntülenen sayfanın kalıcı bağlantısını giriş URL'sine geçtik, böylece kullanıcı başarılı giriş yaptıktan sonra geçerli sayfaya yönlendirilecek.
  5. Ihtiyacınızı class="right"karşılamak için yukarıdaki kodu kullandık.

Bu blogda ayrıntılı bir açıklama bulabilirsiniz .


@ Yirmi yedi (çocuk) temada timo-ler bu sadece çalışacak topmenü konumu: if ($args->theme_location == 'top').
Iurie Malai

konum benim için gerekliprimary-menu
Toskan


0

Altbilgim menüsü bir widget , bu nedenle Chittaranjan tarafından kodu kullanmakta zorlandım. Aşağıdaki düzenlenmiş sürüm benim için çalışıyor. Bağlantıları da değiştirdim ve "dinamik" yaptım: oturum açma, seçtiğiniz bir sayfaya yönlendirir, oturum kapatma geçerli sayfada kalır veya geçerli sayfa (özel) oturum açma sayfanızsa, eve gönderilir. İdeal olarak, giriş sayfanızın gerçekten özel olup olmadığını kontrol eder, ancak bunu nasıl yapacağımı bilmiyorum, üzgünüm.

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

Kodunuzu, her satırın başında 4 boşluk kullanarak biçimlendirmeniz gerekir (yardıma bakın).
Peter HvD

Lütfen web sitenizin reklamını yapmayın. Lütfen yanıtınızı, bu kod bloğunun eldeki soruya nasıl cevap verdiğine, nereye ekleyeceğine ve özellikle ne işe yaradığına ilişkin bir açıklama ile düzenleyin.
Howdy_McGee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.