मैं एक लंबित उपयोगकर्ता नाम पंजीकरण कैसे अन-रिजर्व कर सकता हूं?


9

मैं एक नया वर्डप्रेस मल्टीसाइट उदाहरण स्थापित कर रहा हूं, और अभी भी स्टैक में कुछ किंक बाहर काम कर रहा हूं। फिलहाल सबसे महत्वपूर्ण, उपयोगकर्ता पंजीकरण ईमेल किसी कारण से वितरित नहीं किए जा रहे हैं। नतीजतन, कई उपयोगकर्ता नाम लिम्बो में फंस गए हैं क्योंकि उन्हें सक्रिय करने के लिए आवश्यक पुष्टिकरण ईमेल खो गए हैं।

अभी के लिए मैं केवल पुष्टि ईमेल के बिना इन उपयोगकर्ता नाम को मैन्युअल रूप से पंजीकृत करना चाहूंगा, लेकिन जब मैं ऐसा करने की कोशिश करता हूं तो मुझे यह कहते हुए त्रुटि मिलती है कि नाम आरक्षित है और कुछ दिनों में उपलब्ध हो सकता है। मैं उन्हें कैसे सुरक्षित रख सकता हूं?

जवाबों:


13

DB पहुँच परत और पंक्तियों को हटाने

वर्डप्रेस wpdbडेटाबेस का उपयोग करके डेटाबेस परत तक पहुंच का प्रबंधन करने के लिए वर्ग का उपयोग करता है global $wpdb। वर्ग delete()तालिकाओं से पंक्तियों को हटाने के लिए एक विधि प्रदान करता है :

$wpdb->delete( $table, $where, $where_format = null );

मल्टीसाइट टेबल और सक्रियण कुंजी

वर्डप्रेस में कुछ एमयू विशिष्ट टेबल हैं , जहां एक {$wpdb->prefix}signups(आपकी wp-config.phpफ़ाइल में उपसर्ग सेट ) है। टेबल्स योजना यहाँ । उपयोगकर्ता खाता सक्रियण के लिए जिम्मेदार वह है activation_key, जो उपयोगकर्ता द्वारा मेल में दिए गए लिंक पर क्लिक करने के बाद सेट हो जाता है। उसके बाद, activatedकुंजी एक datetimeमान के साथ सेट हो जाएगी । खाता सक्रिय होने से पहले, डिफ़ॉल्ट मान होगा 0000-00-00 00:00:00(यदि आपको डिफ़ॉल्ट के लिए क्वेरी करने की आवश्यकता है)। इसके अलावा प्रक्रिया में tinyint/ 1कॉलम है active, जो 1उपयोगकर्ता के सक्रिय होने पर सेट किया जाता है।

कोर ही उपयोग करता है wpmu_activate_signup()। इसे कुछ उदाहरणों के लिए देखें। एक निम्नलिखित है जो इसे सक्रिय करने के लिए एक उपयोगकर्ता प्रविष्टि को अपडेट करता है - पठनीयता के लिए पुन: काम किया जाता है।

$wpdb->update(
    $wpdb->signups,
    array(
        'active'    => 1,
        'activated' => current_time( 'mysql', true ),
    ),
    array( 'activation_key' => $key, )
);

अभी तक सक्रिय नहीं खातों के खिलाफ एक क्वेरी का निर्माण

बस WP कड़ी मेहनत करते हैं:

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( 'user_login' => 'some_login', )
);

यदि आप WP_List_Tableएक स्ट्रिंग का उपयोग कर रहे हैं, तो यह इंगित करने के लिए कि आप (n जैसे विस्तृत ) उन अनुरोधों को करने के लिए एक (n व्यवस्थापक) फ़ॉर्म का उपयोग कर रहे हैं, तो आप 3 तर्क (सरणी) का उपयोग कर सकते हैं। ध्यान रखें कि आपको अभी भी $_POSTएड वैल्यूज़ को सैनिटाइज़ करना चाहिए । सुझाव: आप के user_emailरूप में अच्छी तरह से उपयोग कर सकते हैं ।

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( 'user_login' => 'some_login', ),
    array( '%s', )
);

9

यदि आप किसी विशिष्ट उपयोगकर्ता के लिए डेटाबेस में साइनअप हटाने के लिए त्वरित समाधान चाहते हैं, तो आपको वही करना चाहिए जो आप चाहते हैं:

/**
 * Delete a row in the signups table for a given username.
 *
 * @param string $user_login Username.
 * @return bool Whether the signup row was successfully deleted.
 */
function delete_activation_key_by_user( $user_login ) {
    global $wpdb;

    $success = false;

    if ( false !== $wpdb->delete( $wpdb->signups, array( 'user_login' => sanitize_text_field( $user_login ) ) ) ) {
        $success = true;
    }
    return $success;
}

var_dump( delete_activation_key_by_user( 'the_username' ) );
// bool(true|false)

आप इस समस्या को प्रबंधित करने के लिए 'उपयोगकर्ता सक्रियकरण कुंजी' नामक WordPress.org रेपो में एक प्लगइन का उपयोग भी कर सकते हैं, जबकि आपको पता चल रहा है कि ईमेल क्यों नहीं भेजे जा रहे हैं। यह आपको स्वयं को मल्टीसिट में उपयोगकर्ताओं के लिए सक्रियण कुंजी को हटाने या स्वीकृत करने देता है।

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