web-dev-qa-db-ja.com

Add_filterによる新しいユーザー通知メールのカスタマイズの何が問題になっていますか?

新しいユーザーがサインアップすると、確認のEメールが届きます。

Username: testuser To set your password, visit the following address:  

しかし、私はそれをカスタマイズしたいので、私は次のコードをfunctions.phpに追加しました
でもうまくいきません。 それでもデフォルトのメールアドレスが送信されます。
私は4.9.9のワードプレスを使用しています

<?php
add_filter( 'wp_new_user_notification_email', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {

$wp_new_user_notification_email['subject'] = sprintf(__( '[%s] Your username and password' ), $blogname, $user->user_login );

$key = get_password_reset_key( $user );
$message = sprintf(__('Welcome to our website,')) . "\r\n\r\n";
$message .= 'To set your password, visit the following address:' . "\r\n\r\n";
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";
$message .= "After this you can enjoy our website!" . "\r\n\r\n";
$message .= "Kind regards," . "\r\n";
$message .= "Support Team" . "\r\n";
$wp_new_user_notification_email['message'] = $message;

$wp_new_user_notification_email['headers'] = 'From: MyName<[email protected]>'; 
// this just changes the sender name and email to whatever you want (instead of the default WordPress <[email protected]>

return $wp_new_user_notification_email;
}
?>

なぜコードは、動作しませんか?手伝ってくれませんか?

1
Sh.Dehnavi

実際にあなたが持っているコードに問題はありません(私はあなたが上に持っているのでそれをテストしました、そしてそれはうまく動きます)。

しかし、いくつかの追加の可能性を考慮する必要があります。

  1. wp_new_user_notification() 関数はプラグイン可能な関数です。そのため、プラグインやカスタムコードに置き換えることができます。そしてそれが置き換えられた場合、関数のカスタムバージョンはwp_new_user_notification_emailフィルタフックを欠いている可能性があります。
  2. おそらく、これと同じフィルタにフックされた別のフィルタがすでに存在していますが、優先順位が以前(<10)で、プロセスをリダイレクトするか終了します。それは悪い形式でしょうが、それは可能です。これが問題の可能性が高いわけではありませんが、それは可能であるので、私がそれを言及するのはそのためです。
  3. あなたが間違った機能をターゲットにしている可能性があります。 EメールはデフォルトのWP登録であると想定していますが、特に明記していません。カスタム登録やその他のプロセスがあるところで何かをしているのであれば、必ずしもwp_new_user_notification()を通過するわけではありません。

これらの可能性があるので、私はあなたが以下をすることを勧めます:

  1. テーマを見直して、これがwp_new_user_notification_emailフィルタの唯一のインスタンスであることを確認してください。
  2. すべてのプラグインを無効にします。
  3. すべてのプラグインを無効にして再テストしてください。
1
butlerblog