ユーザー登録パスワードのメールを無効にする


13

そのため、WordPress 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');
Abhik

回答:


9

このメールは、phpmailer_initフックを使用して送信される前に傍受できます。

デフォルトでは、このフックはメールが送信される前に起動します。以下の関数では、$phpmailerPHPMailerのインスタンスになります。そのメソッドを使用して、デフォルトの受信者を削除し、送信前に電子メールを操作できます。

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
    }
}

これは問題なく機能し、私の問題を完全に解決し、他の用途にも最適です。すばらしい回答をありがとう!
パティッド

3

実際には、新しいユーザーの作成方法によって異なります。あなたが管理からそれを行う場合-ユーザー-新規追加は正しいです。4.3では、残念ながら通知メールの送信を無効にすることはできません。しかし、メールなしで新しいユーザーを本当に作成したい場合は、方法があります。

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;
}

詳細については、ここでコーデックスを確認してください。


だから、この関数は私が仮定している新しいユーザーが作成されるたびに呼び出されますか?
リサセリーリ

3

このwp_new_user_notification関数はプラグイン可能なため、独自の関数を定義することでオーバーライドできます。wp-includes/pluggable.phpプラグイン(またはfunctions.php)から関数全体をコピーし、電子メールを送信する行を削除できるはずです。


1
プラガブル関数はテーマの前にロードされるため、テーマのfunctions.phpでwp_new_user_notificationをオーバーライドすることはできません。プラグインまたはmuプラグインでオーバーライドする必要があります。続きを読む:wordpress.stackexchange.com/a/55966/56759
fandasson

1

あなたのテーマでこれを解決するには、新しいファイルを作成して新しいmu-pluginを作成し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');

動作します。ただし、テーマのfunctions.phpではなく、プラグイン自体に追加することが不可欠です。

お気に入り。

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.