उपयोगकर्ता पंजीकरण पासवर्ड ईमेल को अक्षम करें


13

इसलिए, वर्डप्रेस 4.3 में एक नया पासवर्ड सिस्टम है जैसा कि हम सभी जानते हैं। दुर्भाग्य से, इस नई प्रणाली ने नए उपयोगकर्ताओं को ईमेल नहीं भेजने की क्षमता के साथ दूर किया है ।

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

मैंने इन ईमेलों को बंद करने के लिए एक समाधान के लिए अपनी खोज में निम्नलिखित कोड पाया है, लेकिन मुझे लगता है कि वे केवल अधिसूचना ईमेल को बंद कर देते हैं यदि उपयोगकर्ता के ईमेल को पहले पंजीकृत उपयोगकर्ताओं के लिए बदल दिया जाता है, तब नहीं जब यह पहली बार बनाया गया हो:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

क्या किसी को पंजीकरण के बाद भेजे गए इन प्रारंभिक पासवर्ड ईमेल को बंद करने का कोई तरीका पता है?

धन्यवाद।


2
क्या आपने यह कोशिश की है? add_filter( 'user_registration_email', '__return_false');
अभि ० अ ० अ ०

जवाबों:


9

phpmailer_initहुक का उपयोग करके भेजे जाने से पहले आप इस ईमेल को रोक सकते हैं ।

डिफ़ॉल्ट रूप से, यह हुक किसी भी ईमेल को भेजने से पहले फायर करता है। नीचे दिए गए फ़ंक्शन में, PHPMailer$phpmailer का एक उदाहरण होगा , और आप डिफ़ॉल्ट प्राप्तकर्ता को हटाने और ईमेल भेजने से पहले उसे हेरफेर करने के लिए इसके तरीकों का उपयोग कर सकते हैं।

add_action('phpmailer_init', 'wse199274_intercept_registration_email');
function wse199274_intercept_registration_email($phpmailer){
    $admin_email = get_option( 'admin_email' );

    # Intercept username and password email by checking subject line
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # clear the recipient list
        $phpmailer->ClearAllRecipients();
        # optionally, send the email to the WordPress admin email
        $phpmailer->AddAddress($admin_email);
    }else{
        #not intercepted
    }
}

यह त्रुटिपूर्ण रूप से काम करता है, पूरी तरह से मेरे मुद्दे को हल करता है और अन्य उपयोगों के लिए भी सही है। एक महान जवाब के लिए धन्यवाद!
pattyd

3

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

आप एक छोटा सा प्लगइन बना सकते हैं, जहाँ आप wp_insert_userफंक्शन के माध्यम से एक नया खाता बनाएँगे , जो डिफ़ॉल्ट रूप से कोई ईमेल नहीं भेजता है।

इस फ़ंक्शन को इस तरह कहा जा सकता है।

wp_insert_user( $userdata );

जहां userdataपैरामीटर एक सरणी है जहां आप सभी आवश्यक जानकारी पास कर सकते हैं।

$userdata = array(
    'user_login'  =>  'login',
    'user_pass'   =>  'password',
);

$user_id = wp_insert_user( $userdata ) ;

//On success
if ( ! is_wp_error( $user_id ) ) {
    echo "User created : ". $user_id;
}

अधिक informations के लिए यहां कोडेक्स चेक करें


जब भी कोई नया उपयोगकर्ता बनाया जाता है, तो मुझे यह फ़ंक्शन कहा जाता है?
लीसा सेरिल्ली

3

wp_new_user_notificationताकि आप इसे अपने खुद के परिभाषित करते हुए ओवरराइड कर सकते हैं समारोह, प्लगेबल है। आपको wp-includes/pluggable.phpअपने प्लगइन (या functions.php) से पूरे फ़ंक्शन को कॉपी करने और ईमेल भेजने वाली लाइन को हटाने में सक्षम होना चाहिए ।


1
आप विषय के functions.php में wp_new_user_notification को ओवरराइड नहीं कर सकते, क्योंकि प्लग करने योग्य फ़ंक्शन थीम से पहले लोड किए जाते हैं। यह प्लगइन या म्यू-प्लगइन में ओवरराइड होना चाहिए। और पढ़ें: wordpress.stackexchange.com/a/55966/56759
fandasson

1

इसे अपने विषय में हल करने के लिए नई फ़ाइल (नाम आप पर निर्भर है) बनाकर नए म्यू-प्लगइन बनाएं wp_new_user_notifications.phpऔर इसे wp-content/mu-pluginsफ़ोल्डर में डालें । अगर ऐसा कोई फ़ोल्डर नहीं है, तो एक बनाएं। किसी भी सबफ़ोल्डर में नहीं, सीधे फ़ोल्डर में php फ़ाइल रखना याद रखें।

जैसा कि साइमन ने सुझाव दिया था - अपने ब्रांड की नई फ़ाइल wp_new_user_notifications.phpसे कॉपी विधि और आवश्यकतानुसार संशोधित करें।wp-includes/pluggable.phpwp_new_user_notifications.php

अपने प्रश्न का उत्तर देने के लिए: प्रारंभिक पासवर्ड को बंद करने के लिए ई-मेल अंतिम wp_mailविधि कॉल को हटाने के लिए पर्याप्त है ।


0
add_filter('send_password_change_email', '__return_false');

काम करता है। लेकिन यह आवश्यक है कि इसका प्लगइन इसे स्वयं में जोड़े और थीम के लिए फ़ंक्शन.php नहीं।

पसंद।

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.