新しいユーザーが登録されたときにユーザーと管理者への電子メール通知をオフにするにはどうすればよいですか?
私はいくつかの提案やプラグインを見ましたが、どれもうまくいくようには見えません。 1つはプラグインの1つから機能を奪うことでした:
if ( !function_exists('wp_new_user_notification') ) :
/**
* Notify the blog admin of a new user, normally via email.
*
* @since 2.0
*
* @param int $user_id User ID
* @param string $plaintext_pass Optional. The user's plaintext password
*/
function wp_new_user_notification($user_id, $plaintext_pass = '') {
$user = new WP_User($user_id);
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
// The blogname option is escaped with esc_html on the way into the database in sanitize_option
// we want to reverse this for the plain text arena of emails.
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
$message = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);
if ( empty($plaintext_pass) )
return;
$message = sprintf(__('Username: %s'), $user_login) . "\r\n";
$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
$message .= wp_login_url() . "\r\n";
// wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message)
}
endif;
質問や提案はかなり古かったので、おそらくWP 3.5で何かを乗り越えようとしません。
申し込み時に、まだ管理者のメールアドレスとユーザーへのメールアドレスを受け取っています。
パスワードを忘れた場合のEメールはブロックしたくありません。
関数wp_new_user_notification
はプラガブルです。それはあなたがあなたのプラグイン/テーマの中でこの関数のあなたのバージョンを宣言することによってそれをオーバーライドできることを意味します。
したがって、すべての通知を完全に無効にしたい場合は、次のようにしてください。
if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
return;
}
endif;
ただし、すべての通知を無効にすることはお勧めできません。少なくともユーザーに通知を送信することをお勧めします(ユーザーは自分のパスワードをどのように見つけますか?)。だからこの場合あなたのコードは次のようになります。
if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
$user = get_userdata( $user_id );
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
if ( empty($plaintext_pass) ) {
return;
}
$message = sprintf(__('Username: %s'), $user_login) . "\r\n";
$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
$message .= wp_login_url() . "\r\n";
wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
}
endif;
今日これをやらなければならず、これらの解決策の多くはかなり時代遅れに見えます。これは、プラグイン可能な関数を上書きすることなく、より良い方法であるように見えます。これは私の正確なコードではありませんが、参考になるはずです。
add_action( 'register_post', 'maybe_stop_notifications', 10, 3 );
function maybe_stop_notifications ( $sanitized_user_login, $user_email, $errors ) {
if( empty( $errors->get_error_code() )) {
remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
}
}
このページ によると、(すべての通知を完全に無効にするには)このコードを使用するだけで十分です。
if ( !function_exists('wp_new_user_notification') ) {
function wp_new_user_notification( ) {}
}
それは与えられた答えにかなり近いが、少し短い。私はこれを価値のあるものとして共有することを考えました。
4.6以降、管理通知を無効にするパラメータがあります。 https://developer.wordpress.org/reference/functions/wp_new_user_notification/ /
$notify
パラメータは、作成したユーザーにのみ通知を送信するための 'user'を受け入れます。