Adaugă link-ul "Deconectare" în meniul de navigare

29 iul. 2014, 21:54:34
Vizualizări: 85.3K
Voturi: 19

Cum pot adăuga un link în meniul principal de navigare cu atributul class="right"?

Am încercat să adaug un link static către example.com/wp-logout.php?action=logout dar acesta duce către o pagină de confirmare pentru deconectare. Există vreo modalitate de a-l transforma într-un link direct de deconectare?

6
Comentarii

Ai văzut întrebări și răspunsuri existente precum acesta?

fuxia fuxia
29 iul. 2014 22:04:32

Ai verificat funcția wp_loginout()?

kaiser kaiser
30 iul. 2014 19:18:01

Am eliminat răspunsul acceptat, deoarece era plagiat de pe acest site fără atribuire.

fuxia fuxia
31 iul. 2014 02:13:36

Am ajuns să folosesc ceva similar; cel puțin folosind funcția loginout(). Voi posta exact ce am făcut data viitoare când voi fi în fața calculatorului meu. Mulțumesc @toscho

Zach Russell Zach Russell
31 iul. 2014 05:30:36

Poți folosi acest plugin gratuit https://wordpress.org/plugins/login-logout-register-menu/ pentru a obține același rezultat cu ușurință.

Vinod Dalvi Vinod Dalvi
16 apr. 2017 10:40:06

De asemenea, poți utiliza un simplu plugin: https://wordpress.org/plugins/login-or-logout-menu-item/ Nu te duce la pagina de confirmare pentru deconectare.

Ray Meyer Ray Meyer
27 mai 2020 11:12:51
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 4
2
49

Puteți realiza acest lucru folosind hook-ul wp_nav_menu_items. Să analizăm următorul fragment de cod care afișează link-ul de autentificare/deconectare în locația meniului primary.

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() .'">'. __("Deconectare") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Autentificare") .'</a></li>';
      }
   }
   return $items;
}

Iată ce am implementat în exemplul de mai sus:

  1. Am adăugat un filtru pentru hook-ul wp_nav_menu_items și i-am atașat o funcție.
  2. După verificarea locației temei primary, am verificat dacă utilizatorul este autentificat sau nu.
  3. Dacă este autentificat, am afișat link-ul Deconectare, altfel link-ul Autentificare.
  4. Am pasat permalink-ul paginii curente către URL-ul de autentificare, astfel încât utilizatorul să fie redirecționat înapoi la pagina curentă după autentificare.
  5. Am folosit class="right" în codul de mai sus pentru a satisface cerința.

Puteți găsi o explicație detaliată pe acest blog.

30 iul. 2014 10:19:10
Comentarii

@timo-s În tema Twenty Seventeen (copil) aceasta va funcționa doar cu o locație de meniu top: if ($args->theme_location == 'top').

Iurie Iurie
2 sept. 2017 23:59:25

locația a trebuit să fie pentru mine primary-menu

Toskan Toskan
3 sept. 2017 07:08:05
1

Încearcă să adaugi un link personalizat cu http://example.com/wp-login.php?action=logout A funcționat pentru mine!

13 nov. 2016 21:12:32
Comentarii

Aceasta afișează utilizatorului promptul "Sigur doriți să vă deconectați?", datorită faptului că nonce-ul lipsește.

random_user_name random_user_name
10 iul. 2017 21:28:34
0

Dacă ești deschis la ideea de a adăuga un plugin pentru această funcționalitate, poți folosi: https://wordpress.org/plugins/login-logout-register-menu/

Acesta adaugă pur și simplu o secțiune foarte convenabilă în constructorul de meniuri. Poți să-l combini cu un alt plugin pentru a restricționa ce elemente de meniu sunt afișate utilizatorilor autentificați, care sunt vizibile pentru cei neautentificați și care sunt accesibile tuturor.

Exemplu interfață plugin login-logout-register-menu

16 iul. 2020 21:01:50
0

Meniu meu din footer este un widget, așa că am avut dificultăți în utilizarea codului lui Chittaranjan. Următoarea versiune editată funcționează pentru mine. Am schimbat și link-urile, făcându-le "dinamice": login duce la o pagină la alegere, logout va rămâne pe pagina curentă sau va redirecționa către homepage, dacă pagina curentă este pagina ta (privată) de login. În mod ideal, ar trebui să verifice dacă pagina de login este cu adevărat privată, dar nu știu cum să fac asta, îmi pare rău.

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 = '/pagina-ta-privata';
            $logoutlink = get_permalink();
            if (strpos($logoutlink, $loginlink) !== false) {
                $logoutlink = '/';
            }
            $items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Deconectare") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Conectare") .'</a></li>';
        }
    }
    return $items;
}
3 sept. 2018 16:17:31