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

公開日:/最終更新日: 2024(令和6)年7月7日

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています



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

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

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

使用しているテーマ・プラグインのテキストドメインが「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()」で元の言語に戻すというのがポイントですね。

, , , , , ,



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Block Theme Customize | Personal WP Customization Notes (PWCN)
ブロックテーマでサイトの背景画像を設定する5つの方法