नेविगेशन मेनू में "लॉगआउट" लिंक जोड़ें


16

मैं class="right"विशेषता के साथ प्राथमिक नेविगेशन मेनू में लिंक कैसे जोड़ सकता हूं ?

मैंने एक स्थिर लिंक जोड़ने की कोशिश की, example.com/wp-logout.php?action=logoutलेकिन वह लॉगआउट पुष्टिकरण पृष्ठ की ओर जाता है। क्या यह लॉग आउट लिंक बनाने का कोई तरीका है?


1
क्या आपने मौजूदा प्रश्नों और उत्तरों को इस तरह देखा है ?
FUXIA

तुमने देखा है wp_loginout()?
केसर

2
मैंने स्वीकार किए गए उत्तर को हटा दिया है, क्योंकि यह इस साइट से बिना किसी विशेषता के साहित्यिक चोरी कर लिया गया था ।
FUXIA

मैंने कुछ इसी तरह का उपयोग करके समाप्त किया; कम से कम लॉगिनआउट () फ़ंक्शन का उपयोग करना। मैं अगली बार वही करूंगा जो मैंने अगली बार अपने कंप्यूटर के सामने किया था। धन्यवाद @toscho
Zach रसेल

आप आसानी से इसे प्राप्त करने के लिए इस मुफ्त प्लगइन wordpress.org/plugins/login-logout-register-menu का उपयोग कर सकते हैं।
विनोद दलवी

जवाबों:


39

आप wp_nav_menu_itemsहुक का उपयोग करके इसे प्राप्त कर सकते हैं । आइए कोड के निम्नलिखित टुकड़े पर एक नज़र डालें जो 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() .'">'. __("Log Out") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
      }
   }
   return $items;
}

यह हमने उपरोक्त उदाहरण में लागू किया है।

  1. पहले wp_nav_menu_itemsहुक के लिए एक फिल्टर जोड़ा और इसे एक फ़ंक्शन संलग्न किया।
  2. primaryथीम स्थान की जाँच करने के बाद , हमने जाँच की है कि उपयोगकर्ता लॉग इन है या नहीं।
  3. यदि लॉग इन किया है, तो हमने Log Outलिंक दिखाया है अन्यथा Log In लिंक।
  4. हमने वर्तमान में देखने वाले पेज के लॉगिन पर जाने की अनुमति दे दी है ताकि सफल लॉगिन के बाद उपयोगकर्ता को वर्तमान पृष्ठ पर पुनः निर्देशित किया जा सके।
  5. class="right"आपकी आवश्यकता को पूरा करने के लिए हमने उपरोक्त कोड का उपयोग किया है ।

आप इस ब्लॉग पर एक विस्तृत विवरण पा सकते हैं ।


@ टिमो-एस इन द ट्वेंटी सत्रह (बच्चा) थीम केवल एक topमेनू स्थान के साथ काम करेगी if ($args->theme_location == 'top'):।
इउरी मलाई

मेरे लिए स्थान की जरूरत हैprimary-menu
तोस्कान

2

Http://example.com/wp-login.php?action=logout के साथ एक कस्टम लिंक जोड़ने का प्रयास करें यह मेरे लिए काम किया!


1
यह उपयोगकर्ता को "क्या आप सुनिश्चित हैं कि आप लॉग आउट करना चाहते हैं?" शीघ्र, इस तथ्य के कारण कि नॉनस गायब है।
cale_b

0

मेरा पाद लेख मेनू एक विजेट है , इसलिए मुझे चितरंजन द्वारा कोड का उपयोग करने में कठिनाई हुई। निम्नलिखित संपादित संस्करण मेरे लिए काम करता है। मैंने लिंक भी बदल दिए और उन्हें "डायनामिक" बना दिया: लॉगिन आपकी पसंद के एक पृष्ठ पर ले जाता है, लॉगआउट या तो वर्तमान पृष्ठ पर रहेगा, या घर भेज देगा, यदि वर्तमान पृष्ठ आपका (निजी) लॉगिन पृष्ठ है। आदर्श रूप से यह जाँच करेगा कि क्या आपका लॉगिन पृष्ठ वास्तव में निजी है, लेकिन मुझे नहीं पता कि यह कैसे करना है, क्षमा करें।

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

आपको प्रत्येक पंक्ति की शुरुआत में 4 रिक्त स्थान का उपयोग करके अपने कोड को प्रारूपित करने की आवश्यकता है (सहायता देखें)।
पीटर एचवीडी

कृपया अपनी वेबसाइट का विज्ञापन न करें। कृपया अपने उत्तर को एक स्पष्टीकरण के साथ संपादित करें कि यह कोड ब्लॉक हाथ में प्रश्न का उत्तर कैसे देता है, इसे कहां जोड़ना है और यह विशेष रूप से क्या करता है।
Howdy_McGee
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.