【Simple Membership】ログインボタンの文言を変更する方法

※本ブログの目的は個人の備忘録であり、コードは参考用として掲載しています。
実際に使用される際は、ご自身の環境で十分に動作確認を行ってください。
コードの利用によって生じたいかなる問題についても責任を負いかねますので、あらかじめご了承ください。

WordPressの会員制プラグイン「Simple Membership」では、標準のログインフォームに「Log In」という英語表記のボタンが表示されます。

サイト全体を日本語で統一したい場合、この英語のままだと少し気になりますよね。

今回はこの ログインボタンのラベルを「ログイン」に変更する方法 を紹介します。

デフォルトのログインボタン

Simple Membershipのログインフォームは、テンプレートファイル内で次のように定義されています。

<input type="submit" class="<?php echo esc_attr($login_submit_class); ?>" name="swpm-login" value="<?php _e('Log In', 'simple-membership') ?>"/>

このように、_e('Log In', 'simple-membership') で「Log In」という文字列が翻訳用テキストとして出力されています。

つまり、この "Log In" 部分を書き換えるか、翻訳を上書きすることで日本語化できます。

言語ファイルを確認してみる

/wp-content/plugins/simple-membership/languages/ フォルダにあるsimple-membership-ja.po ファイルを確認してみましょう。

翻訳が定義されている場合は、このファイル内に次のような形式で記載されています。

#: views/login.php:33
msgid "Forgot Password?"
msgstr "パスワードをお忘れですか?"

このように "Forgot Password?" は日本語に翻訳されていますが、「Log In」に対応する翻訳は含まれていませんでした。

Simple Membership の日本語翻訳ファイルでは、多くの管理画面向けテキストは翻訳されていますが、この「Log In」ボタンのようなフロントエンド(会員ページ側)の一部文言は未翻訳のままになっています。

そのため、翻訳ファイルだけを編集してもボタンの表示を変更することはできません。

次の章で紹介する gettext フィルターを使う方法が確実です。

フックを使って「Log In」を「ログイン」に変更する方法

テンプレートを直接編集せずに、functions.php に以下のコードを追加するだけでOKです。

function my_swpm_change_login_button_text( $translated_text, $text, $domain ) {
    if ( $domain === 'simple-membership' && $text === 'Log In' ) {
        return 'ログイン';
    }
    return $translated_text;
}
add_filter( 'gettext', 'my_swpm_change_login_button_text', 10, 3 );
  • gettext フィルターを使うことで、翻訳対象文字列を動的に書き換える
  • $domainsimple-membership の場合のみ置き換えるので、他プラグインへの影響を防げる
  • テンプレートを直接編集しないため、プラグイン更新にも強い安全な方法である

補足:gettext フィルターとは

gettext フィルターは、WordPressの「翻訳機能」に介入できるフィルターのひとつです。

WordPressやプラグインは通常、テキストを出力する際に次のような関数を使います。

_e( 'Log In', 'simple-membership' );

このとき、WordPressは内部的に .mo ファイルを参照して翻訳済みの文字列を探します。

その検索・置換の過程で、すべてのテキストが一度 gettext フィルターを通過します。

つまりこのフィルターを利用すると、翻訳ファイルに登録されていないテキストでも、PHP側から自由に翻訳(上書き)できるわけです。

まとめ

Simple Membership のログインボタン文言を変更したい場合、翻訳ファイルでは対応できないケースがあります。

そのようなときは、WordPress の gettext フィルターを使って出力時に文字列を置き換えるのが簡単で確実です。

特に今回の「Log In → ログイン」のような小さな変更なら、数行のコードで柔軟に対応できます。