Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

wp_mailで送信するメールを翻訳(国際化)対応にする方法

以前に公開した、ログイン時にメール通知する方法をさらにカスタマイズし、サイトやユーザーのロケール(管理画面上で登録した地域設定)に応じて内容を翻訳して送信する方法のメモ書きです。

まずは前知識として、ログイン時のメール通知を実装しておいた方がいい理由やコードの詳細解説は以下のページを参照ください。

そして、以下がリンク先ページのコードを、翻訳対応(国際化対応)できるようにしたコードです。

使用しているテーマ・プラグインのテキストドメインが「textdomain」、翻訳対応させるための措置がされていることが前提です

/* ログイン後に「管理者メールアドレス」へ通知 */
function pwcn_send_login_notification_to_admin($user_login, $user) {
    $locale = get_locale();
    switch_to_locale($locale);

    $admin_email = get_option( 'admin_email' );
    $subject = __('Login Notification','textdomain');
    $message = __('User Name : ','textdomain') . $user_login . __('is logged in Site' . "\n\n";
    $message .= __('Logged in IP Address: ','textdomain') . $_SERVER['REMOTE_ADDR'];
    
    wp_mail( $admin_email, $subject, $message );

    restore_previous_locale();
}
add_action('wp_login', 'pwcn_send_login_notification_to_admin', 10, 2);

比べていただくと分かりますが、以下が変更点です。

switch_to_locale()」で言語を変更する、これをしないと、いくら翻訳用の文字列設定をしても言語は変わりません。

これ以降で処理されるものが言語変更されたままになってしまうので、「restore_previous_locale()」で元の言語に戻すというのがポイントですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します