ClaudeでSimple Membershipの日本語修正(備忘録)

Simple Membershipは、ほとんどのところは日本語化されているのですが、

会員コンテンツを会員でない方が見ようとした時に出るメッセージが、プラグインの更新の度に元に戻ってしまうのをやっとClaudeで解決できました。

このコンテンツを閲覧するにはログインが必要です。お願い Log In.あなたは会員ですか?会員について

このコンテンツを閲覧するにはログインが必要です。ログイン。 会員でない方はこちら

に修正。

子テーマのfunctions.php に下記を追記。

// Simple Membership エラーメッセージ 日本語化
add_filter( 'swpm_translation', function( $translated, $original ) {
    $messages = [
        // ログイン関連
        'Username or Password is incorrect.'           => 'ユーザー名またはパスワードが正しくありません。',
        'Please enter a username.'                     => 'ユーザー名を入力してください。',
        'Please enter a password.'                     => 'パスワードを入力してください。',

        // アカウント状態
        'Your account is not active.'                  => 'アカウントが有効化されていません。',
        'Your membership has expired.'                 => 'メンバーシップの有効期限が切れています。',
        'Account is pending admin approval.'           => 'アカウントは管理者の承認待ちです。',
        'You are already logged in.'                   => 'すでにログインしています。',

        // パスワードリセット
        'Please enter your email address.'             => 'メールアドレスを入力してください。',
        'No account found with that email address.'    => 'そのメールアドレスのアカウントが見つかりません。',
        'Password reset email has been sent.'          => 'パスワードリセットのメールを送信しました。',

        // ログインフォーム
        'Log In'                                       => 'ログイン',
        'Password'                                     => 'パスワード',
        'Username or Email'                            => 'ユーザー名またはメールアドレス',
        'Show password'                                => 'パスワードを表示',
        'Remember Me'                                  => 'ログイン状態を保持する',
        'Forgot Password?'                             => 'パスワードをお忘れですか?',
        'Join Us'                                      => '新規会員登録',

        // コンテンツ保護メッセージ
        'Please'                                       => 'ログインしてください',
        'Not a Member?'                                => '会員でない方はこちら',
        'You need to be logged in to view this content. ' => 'このコンテンツを閲覧するにはログインが必要です。',
    ];

    return $messages[ $original ] ?? $translated;
}, 10, 2 );

// get_login_link の文言を直接上書き
add_filter( 'swpm_get_login_link_url', function( $login_url ) {
    return $login_url; // URLはそのまま
});

add_filter( 'swpm_not_logged_in_post_msg', function( $msg ) {
    $settings = SwpmSettings::get_instance();
    $login_url = $settings->get_value( 'login-page-url' );
    $joinus_url = $settings->get_value( 'join-us-page-url' );
    $hide_join_us = $settings->get_value( 'hide-join-us-link' );

    $new_msg = 'このコンテンツを閲覧するにはログインが必要です。';
    $new_msg .= '<a class="swpm-login-link" href="' . esc_url( $login_url ) . '">ログイン</a>。';

    if ( empty( $hide_join_us ) ) {
        $new_msg .= ' 会員でない方は<a href="' . esc_url( $joinus_url ) . '">こちら</a>';
    }

    return '<div class="swpm-post-not-logged-in-msg">' . $new_msg . '</div>';
});