web-dev-qa-db-ja.com

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

そのため、WordPress 4.3には、新しいパスワードシステムがあります。残念ながら、この新しいシステムはNOT新規ユーザーにEメールを送信する機能を廃止しました。

私のクライアントは、自分のクライアントにカスタムEメールを送信し、手動でEメールを登録してから、ログイン情報とカスタムメッセージを含むEメールを送信するシステムを使用していました。私たちは、この新しいシステムがより安全になろうとしているのを知っています、しかし、これは彼が望むコントロールの量のために働いていません。

これらのEメールをオフにするための解決策を探すために以下のコードを見つけましたが、それらは最初に作成されたときではなく、以前に登録されたユーザーに対して変更された場合

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

登録後に送信されたこれらの初期パスワードEメールを無効にする方法を知っている人はいますか?

ありがとうございました。

12
Lisa Cerilli

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

デフォルトでは、このフックはEメールが送信される前に起動します。以下の関数では、$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
    }
}
8
sxalexander

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

デフォルトではEメールを送信しない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;
}

より詳しい情報はcodex here をチェックしてください。

3
Emetrop

wp_new_user_notification関数はプラガブルなので、あなたはあなた自身のものを定義することによってそれをオーバーライドすることができます。関数全体をwp-includes/pluggable.phpから自分のプラグイン(またはfunctions.php)にコピーし、Eメールを送信する行を削除することができるはずです。

3

あなたのテーマの中でこれを解決するには、新しい mu-plugin を作成して新しいファイルwp_new_user_notifications.php(名前はあなた次第です)を作成し、それをwp-content/mu-pluginsフォルダに置きます。そのようなフォルダがない場合は、作成してください。 phpファイルは、サブフォルダではなくフォルダに直接配置してください。

Simonが提案したとおりに続ける - wp_new_user_notifications.phpからwp-includes/pluggable.phpメソッドを新しいwp_new_user_notifications.phpファイルにコピーし、必要に応じて修正する。

あなたの質問に答えるには:最初のパスワードの電子メールをオフにするための最後のwp_mailメソッド呼び出しを削除するのに十分です。

1
fandasson
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');
  }
}
0
Philip