そのため、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メールを無効にする方法を知っている人はいますか?
ありがとうございました。
phpmailer_init
フックを使用して送信される前にこのEメールを傍受することができます。
デフォルトでは、このフックはEメールが送信される前に起動します。以下の関数では、$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
}
}
実際には、それはあなたが新しいユーザをどのように作成するかによって異なります。あなたが管理からそれを行う場合 - ユーザー - 追加新しいあなたは正しいです。残念ながら、通知メールの送信を無効にすることはできません。しかし、あなたが本当に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 をチェックしてください。
wp_new_user_notification
関数はプラガブルなので、あなたはあなた自身のものを定義することによってそれをオーバーライドすることができます。関数全体をwp-includes/pluggable.php
から自分のプラグイン(またはfunctions.php
)にコピーし、Eメールを送信する行を削除することができるはずです。
あなたのテーマの中でこれを解決するには、新しい 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
メソッド呼び出しを削除するのに十分です。
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');
}
}