पुष्टि के बिना लॉग आउट कैसे करें 'क्या आप वास्तव में लॉग आउट करना चाहते हैं? "


13

अभी जब मैं लॉग आउट करता हूं:

<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>

यह मुझे उस पृष्ठ पर पुनर्निर्देशित करता है जहाँ मुझे लॉग आउट की पुष्टि करने की आवश्यकता है।

लॉगआउट के बाद मुखपृष्ठ पर पुष्टिकरण और पुनर्निर्देशन को कैसे समाप्त करें?

जवाबों:


31

ऐसा इसलिए होता है क्योंकि आप URL में नेकसेरी नॉन को याद कर रहे हैं, जिसे चेक किया जा रहा है wp-login.php

case 'logout' :
    check_admin_referer('log-out');
    ...

wp_logout_urlगैर सहित URL को पुनः प्राप्त करने के लिए उपयोग करें । यदि आप किसी कस्टम URL पर पुनर्निर्देशित करना चाहते हैं, तो बस इसे एक तर्क के रूप में पास करें।

<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>

आप इसका उपयोग भी कर सकते हैं wp_loginoutजो आपके लिए अनुवाद सहित लिंक उत्पन्न करता है:

echo wp_loginout('/redirect/url/goes/here')

1
इको wp_loginout ('/ redirect / url / go / here') ठीक काम कर रहा है ..
मयूर देवमुरारी

1
मैं उपयोग कर रहा हूं wp_logout_url( get_permalink())और पुष्टि पृष्ठ बाईपास नहीं है। नॉन यूआरएल के हिस्से के रूप में उत्पन्न होता है, लेकिन मुझे अभी भी पुष्टिकरण पृष्ठ पर भेजा जाता है
राल्फोंज़

यहाँ एक ही मुद्दा :(
जरमनसन

15

यदि आप wp_logout_url()फ़ंक्शन का उपयोग नहीं कर सकते हैं , तो आप इस कोड का उपयोग करके इस सत्यापन को बंद कर सकते हैं:

add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
    /**
     * Allow logout without confirmation
     */
    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
        $location = str_replace('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}

'url-you-want-to-redirect'उस URL से बदलें जिसे आप लॉगआउट के बाद पुनर्निर्देशित करना चाहते हैं।

इसे अपने में जोड़ें functions.php


यह सत्यापन के बिना लॉग आउट करने के लिए काम करता है, लेकिन यह उस यूआरएल को रीडायरेक्ट नहीं करता है जो मुझे चाहिए।
फु गुयेन

@PhuNguyen आपको केवल उस कोड में रीडायरेक्ट URL को उस कोड में जोड़ने की आवश्यकता है जहां कोलन के बाद '' कोट्स हैं।
एनजेएएनजीएएच

क्या इस मान्यता को हटाने के लिए कोई सुरक्षा निहितार्थ हैं?
ROK

@ user1264304 मेरा मानना ​​है कि दुर्भावनापूर्ण जेएस किसी तरह ब्राउज़र में लोड किया गया लॉगिन पेज पर रीडायरेक्ट कर सकता है, लेकिन यह सब करने वाला उपयोगकर्ता लॉगआउट है। वास्तव में दुर्भावनापूर्ण कोड संभवतः एक वैध नॉन से पहले यूआरएल को बदलना होगा। उपयोगकर्ता किसी अन्य साइट पर नेविगेट कर सकता है, जिसमें उसके बाद वर्तमान साइट के लॉगआउट पृष्ठ का लिंक है - यह मानते हुए कि अन्य साइट यह जानती है कि उपयोगकर्ता का संबंध है। फिर से, उपयोगकर्ता को लॉग आउट करने के अलावा कोई परिणाम नहीं। मैंने यह कभी नहीं देखा। इसलिए आपके प्रश्न का उत्तर देने के लिए, मुझे नहीं लगता कि मान्यता को हटाने के लिए कोई सुरक्षा निहितार्थ है।
टोनीजी

इर, बहुत सारे पुनर्निर्देश ...
सुलैमान क्लॉसन

3

यदि आप अपने मेनू में एक कस्टम लिंक बनाते हैं, तो लेबल को “Logout”URL पर सेट करें और सेट करें http://yourdomain.com/wp-login.php?action=logout। फिर इस फ़ंक्शन को अपनी functions.phpफ़ाइल में जोड़ें :

function change_menu($items){
  foreach($items as $item){
    if( $item->title == "Logout"){
         $item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' );
    }
  }
  return $items;

}
add_filter('wp_nav_menu_objects', 'change_menu');

यदि आप लॉगआउट के बाद लॉगिन पेज पर पुनर्निर्देशित करना चाहते हैं तो आपको लॉगिन URL को इस प्रकार जोड़ना चाहिए:

$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();

संदर्भ लिंक


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.