जावास्क्रिप्ट फ़ंक्शन wp_attempt_focus
इस समस्या का कारण बन रहा है। फ़ंक्शन पेज लोड होने के तुरंत बाद फायर करता है, फ़ॉर्म को साफ़ करता है और उस पर ध्यान केंद्रित करता है, जिससे उपयोगकर्ता मैन्युअल रूप से अपनी लॉगिन जानकारी दर्ज कर सकते हैं।
Chrome, जेएस फ़ंक्शन के क्षेत्र को साफ़ करने से पहले, स्वचालित रूप से उपयोगकर्ता नाम और पासवर्ड भर रहा है। Chrome ठीक से परिवर्तनों को नहीं उठाता है, फिर भी पीले रंग के भरे हुए फ़ील्ड प्रदर्शित करते हैं, भले ही फ़ील्ड वास्तव में खाली हों।
हालांकि मैं ऑटोफोकस कार्यक्षमता की सराहना करता हूं, मैं एक अच्छे कारण के बारे में सोच भी नहीं सकता हूं कि कोई भी व्यक्ति स्वचालित रूप से स्पष्ट करना चाहेगा।
स्रोत
अफसोस की बात है कि फंक्शन को wp-login.php
913-930 (वर्डप्रेस 4.0) लाइनों में हार्डकोड किया गया है । wp-login.php
फ़ाइल को पूरी तरह से बदलना एक बुरा विचार है, क्योंकि इसे किसी भी आगामी वर्डप्रेस अपडेट में ओवरराइट किया जा सकता है। इसलिए हमें थोड़ा resort हैकिंग ’का सहारा लेना पड़ेगा।
आसान तय है
wp_attempt_focus
यदि प्रपत्र कोई त्रुटि नहीं है समारोह कहा जाता है। हम भाग्य में हैं - त्रुटि की जाँच PHP के माध्यम से की जाती है। इसका मतलब है कि हम केवल WP क्रियाओं का उपयोग करके फ़ंक्शन को सही समय पर फ़ॉर्म त्रुटि को रोककर फायरिंग से रोक सकते हैं। मैंने login_form
एक्शन को चुना क्योंकि जेएस कॉल से ठीक पहले एक्शन हमेशा त्रुटि से निपटने के बाद फायर करता है। अपनी थीम functions.php
(या प्लगइन फ़ाइल) में निम्नलिखित कोड जोड़ें :
add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
global $error;
$error = TRUE;
}
Hackish फिक्स
ऊपर दिए गए फिक्स फ़ंक्शन को पूरी तरह से फायरिंग से बचाता है, जिसका अर्थ है कि आपको उचित ऑटोफोकस भी नहीं मिलेगा। इसके चारों ओर एक और तरीका है: HTML आउटपुट को बफ़र करना और गीकलैबob_start
से प्रेरित होकर इसे संशोधित करना । बफरिंग हमें कोड के विशिष्ट भागों को हटाने की अनुमति देता है - इस मामले में, आटोक्लेयर भाग । हालांकि बफर फ्लश करने के लिए मत भूलना।d.value = ''
add_action("login_form", "kill_wp_attempt_focus_start");
function kill_wp_attempt_focus_start() {
ob_start("kill_wp_attempt_focus_replace");
}
function kill_wp_attempt_focus_replace($html) {
return preg_replace("/d.value = '';/", "", $html);
}
add_action("login_footer", "kill_wp_attempt_focus_end");
function kill_wp_attempt_focus_end() {
ob_end_flush();
}