प्रोग्रामेटिक रूप से उपयोगकर्ता नाम (user_login) कैसे बदलें?


15

जैसे शीर्षक में, उपयोगकर्ता के लॉगिन को प्रोग्रामेटिक रूप से कैसे बदला जाए?

मैं wp_insert_userफ़ंक्शन का उपयोग करना चाहता था , लेकिन ऐसा प्रतीत होता है कि वर्तमान उपयोगकर्ता को अपडेट करते समय, यह उनके उपयोगकर्ता नाम को नहीं बदलता है। क्या मुझे उसके लिए उपयोग करना चाहिए $wpdb->update? यदि हाँ, तो उपयोगकर्ता नाम बदलने के लिए कोड कैसा होगा? उपयोगकर्ता लॉगिन को बदलने के क्या परिणाम होंगे, यह देखते हुए कि WordPress API उपयोगकर्ता नाम बदलने की अनुमति नहीं देता है?

जवाबों:


21

मुझे यकीन था कि wp_update_userफ़ंक्शन को यह करना चाहिए ( http://codex.wordpress.org/Function_Reference/wp_update_user )।

यह भी user_login को परम के रूप में प्राप्त करता है, लेकिन ऐसा लगता है कि यह इसे अनदेखा करता है, जब आप इस परम को सेट करते हैं।

तो यह कोड ठीक दिखता है, लेकिन यह काम नहीं करता है जैसा आप चाहते हैं :(

wp_update_user( array ( 'ID' => $user_id, 'user_login' => $new_login ) ) ;

आपको user_login अपडेट करने के लिए कस्टम SQL क्वेरी को कॉल करना होगा:

$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));

यह ठीक काम करता है और मुझे नहीं लगता कि इसके कोई गंभीर परिणाम हैं, क्योंकि WP उपयोगकर्ता आईडी का उपयोग उपयोगकर्ता को पोस्ट / टिप्पणियां (और इसी तरह) असाइन करने के लिए करता है।

एकमात्र समस्या जो मैं सोच सकता हूं, वह यह है कि जब यह उपयोगकर्ता वर्तमान में लॉग इन है, तो वह user_login परिवर्तन के बाद लॉग आउट हो जाएगा।


2
वास्तव में नहीं, इस फ़ंक्शन के लिए नोट्स (साथ ही कोड) की जांच करें: कृपया ध्यान दें कि हम इस फ़ंक्शन के माध्यम से उपयोगकर्ता नाम नहीं बदल सकते हैं, वास्तव में उपयोगकर्ता नाम व्यवस्थापक डैशबोर्ड से नहीं बदले जा सकते हैं क्योंकि वर्डप्रेस उपयोगकर्ता नामों की अनुमति नहीं देता है अद्यतन किया जा।
माटूस हज्ज़ियोनी

धन्यवाद, यह बहुत अच्छा काम करता है! उपयोगकर्ताओं में लॉग इन के बारे में कोई चिंता नहीं है, हालांकि, क्योंकि मैं केवल लॉग आउट उपयोगकर्ताओं (ई-मेल के माध्यम से सक्रियण) के लिए उपयोगकर्ता नाम बदलने की अनुमति देता हूं।
मेटुस हज्ज़ियोनी

@pogoking एक बात जिस पर आप विचार करना चाहते हैं, वह यह हो सकता है कि उपयोगकर्ता या उपयोगकर्ता के उपयोगकर्ता नाम बदलने के बाद उपयोगकर्ता के पेनलिंक को तोड़ा जा सकता है यदि बहुत से पेरालिंक्स सक्षम हैं, तो आपको उसकी भरपाई करने के लिए उपाय करने की आवश्यकता हो सकती है।
अहमद एम

1
मुझे वैश्विक $ wpdb जोड़ने की जरूरत है; इसे काम करने के लिए
मऊ

4
पुरानी पोस्ट, लेकिन खुद को ऐसा करते हुए देखने के बाद, यह जाँचने लायक होगा कि आपकी साइट पर उसी user_login के साथ कोई अन्य उपयोगकर्ता पंजीकृत नहीं है क्योंकि लॉगिन फ़ॉर्म स्पष्ट रूप से खातों को खोजने और पासवर्ड हैश करने के लिए इस मान का उपयोग करता है
hxxxton

4

आप SQL क्वेरी के माध्यम से user_nicename को बदलने पर विचार कर सकते हैं। एक बार यह पूरा हो जाने के बाद, सभी पर्मलिंक और अन्य कार्य सही काम करेंगे।

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