मेरे टेम्प्लेट पृष्ठ पर 'लॉगिन त्रुटि' और 'खो गया पासवर्ड' कैसे दिखाएं?


10

मैं फ़ंक्शन wp_login_form का उपयोग करके टेम्पलेट में फ्रंट-एंड लॉगिन प्रदान कर रहा हूं। यह लॉगिन के बाद पुनर्निर्देशन को संभालता है और बहुत करीने से लॉगआउट करता है! लेकिन अगर उपयोगकर्ता नाम / पासवर्ड मिसमैच, या गैर-मौजूद है, तो उपयोगकर्ता अस्थिर लॉगिन त्रुटि के साथ व्यवस्थापक लॉगिन पृष्ठ पर पुनर्निर्देशित किया जाता है। ऐसा ही मामला है जब मैं पासवर्ड रीसेट करने की कोशिश कर रहा हूं, यह मुझे मेरे बैकएंड पृष्ठ पर ले जाता है जहां मुझे पासवर्ड रीसेट करने के लिए अपना ईमेल दर्ज करना होगा। मैं इन दोनों गतिविधियों को अपने खाके पर दिखाना चाहता हूं। क्या कोई ऐसा तरीका है जिससे मैं यह कर सकूं?

किसी भी सहायता के लिए अग्रिम धन्यवाद।

जवाबों:


9

हाँ, यह मुमकिन है। इसके लिए आपको तीन फिल्टर बनाने होंगे।

किसी वर्ग के अंदर व्यवस्थापन सामग्री

class WPSE29338_Admin {
    public static function setup() {
        add_filter('login_url', array(__CLASS__, 'modifyLoginURL'), 10, 2);
        add_filter('lostpassword_url', array(__CLASS__, 'modifyLostPasswordURL'), 10, 2);
        add_filter('register', array(__CLASS__, 'modifyRegisterURL'));
    }

    public static function modifyLoginURL($loginUrl, $redirect = '') {
        $loginUrl = site_url('login'); // Link to login URL

        if(!empty($redirect)) {
            $loginUrl = add_query_arg('redirect_to', urlencode($redirect), $loginUrl);
        }

        return $loginUrl;
    }

    public static function modifyLostPasswordURL($lostpwUrl, $redirect = '') {
        $lostpwUrl = wp_login_url() . '#lostpassword'; // Link to lostpassword URL

        if(!empty($redirect)) {
            $lostpwUrl = add_query_arg('redirect_to', urlencode($redirect), $lostpwUrl);
        }

        return $lostpwUrl;
    }

    public static function modifyRegisterURL($registerUrl) {
        if(!is_user_logged_in()) {
            if (get_option('users_can_register')) {
                $registerUrl = '<a href="' . wp_login_url() . '#register" class="btn">' . __('Register') . '</a>'; // Link to register URL
            } else {
                $registerUrl = '';
            }
        }

        return $registerUrl;
    }
}

पहले हमें फ़ंक्शन के आउटपुट को फ़िल्टर करने की आवश्यकता wp_login_url()होती है जो wp_login_form()प्रपत्र actionविशेषता में उपयोग किया जाता है ।

विधि को देखो modifyLoginUrl()। यहां हम loginवेरिएबल के अंदर पेज का URL स्टोर करते हैं $loginUrl। यह पेज वर्डप्रेस के अंदर मौजूद होना चाहिए, इसलिए इसे पहले बनाएं।

अगला हमें फ़ंक्शन के लिए एक फिल्टर की आवश्यकता है wp_lostpassword_url()और wp_register()। यह मूल रूप से एक ही है। साइट का URL चर के अंदर संग्रहीत किया जाता है $lostpwUrlऔर $registerUrl

अंतिम लेकिन कम से कम, आपको क्लास को सही एक्शन हुक पर कॉल करना होगा। थीम के लिए यह होना चाहिए after_setup_themeऔर प्लगइन्स के लिए आप उपयोग कर सकते हैं plugins_loaded

विषय / कार्य

add_action('after_setup_theme', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

प्लगइन्स

add_action('plugins_loaded', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

मैं इसे टक्कर देने के लिए माफी चाहता हूं, लेकिन मैं ऐसा करना पसंद करूंगा, लेकिन मैं इसका पता नहीं लगा सकता हूं! आपके द्वारा प्रदान किए गए कोड में, मेरे द्वारा क्या बदला जाना चाहिए?
Bram Vanroy

ब्रैम, यदि आप एक कस्टम थीम बना रहे हैं, तो कोड के पहले और दूसरे ब्लॉक को अपनी थीम फ़ंक्शन फ़ाइल में डालें। यदि आप एक प्लगइन बना रहे हैं, तो अपनी प्लगइन फाइल में कोड का पहला और तीसरा ब्लॉक डालें। ऐसा लगता है कि केवल एक चीज जिसे आप संशोधित कर सकते हैं वह है कक्षा की 9 वीं पंक्ति, जहां यह कहता है $loginUrl = site_url('login'); // Link to login URL। आप जिस प्रवेश पृष्ठ का उपयोग करना चाहते हैं, उसके स्लग से मिलान करने के लिए बस 'लॉगिन' बदलें। जब तक रॉफ्लोक्स ने एक सिंटैक्स त्रुटि नहीं की, जो मैं नहीं देख रहा हूं, ऐसा लगता है कि यह खूबसूरती से काम करेगा।
जेन

@guiniveretoo आपके उत्तर के लिए धन्यवाद! समस्या यह है कि मैं एक ड्रॉपडाउन फॉर्म के साथ काम करता हूं जिसे वेबसाइट पर किसी भी पृष्ठ से एक्सेस किया जा सकता है। तो, वहाँ कोई निश्चित स्लग संभव नहीं है, क्योंकि लोग किसी भी पेज से लॉगिन कर सकते हैं ... तो, मुझे वहाँ क्या डालना चाहिए?
ब्रैम वनरॉय

1
ब्रैम - वर्डप्रेस को एक लॉगिन यूआरएल की आवश्यकता होती है ताकि अगर कुछ उपयोगकर्ता त्रुटि या समान हो, तो उनके लिए कहीं न कहीं जाकर अपना पासवर्ड रीसेट करना होगा या किसी खाते के लिए साइन अप करना होगा। लॉगिन यूआरएल सेट करने से वह पेज उपलब्ध हो जाता है। मैंने पिछले साल एक प्रोजेक्ट के साथ बिल्कुल यह सेटअप किया था: एक जावास्क्रिप्ट लॉगिन बॉक्स जो लॉगिन फॉर्म के साथ दिखाई दिया था - यदि वे अपनी जानकारी सही ढंग से दर्ज करते हैं, तो यह उन्हें wp-admin को भेजता है; यदि नहीं, तो वे फिर से कोशिश करने या अपना पासवर्ड रीसेट करने के लिए कस्टम लॉगिन पेज पर समाप्त होते हैं।
जेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.