WordPressのユーザーをメールアドレスなしで追加したい

本ページはプロモーションが含まれています。

技術

覚書です。

スポンサーリンク

目的

Groupsプラグインでユーザー限定公開のページを管理しているWordpressサイトで、ユーザーIDとパスワードを管理者が発行してユーザーに連絡している。
メールアドレスが入力必須かつ重複不可。Wordpressの購読者ユーザーを追加する際にメールアドレスなしで追加できるようにしたい。

  • メールアドレスが空のユーザーを追加してもエラーにしない
  • メールアドレスフィールドの必須バリデーションを解除
  • メールアドレスフィールドの「必須」ラベルを削除
  • 通知メール送信オプションのチェックボックスをデフォルトでオフ

参考URL

動作確認

  • WordPress 6.5.3

functions.phpに以下を追記した

// ユーザープロファイル更新時のエラーメッセージを抑制
add_action('user_profile_update_errors', 'my_user_profile_update_errors', 10, 3);
function my_user_profile_update_errors($errors, $update, $user) {
    $errors->remove('empty_email');
}

// フォームのバリデーションとラベル変更
add_action('user_new_form', 'my_user_new_form', 10, 1);
add_action('show_user_profile', 'my_user_new_form', 10, 1);
add_action('edit_user_profile', 'my_user_new_form', 10, 1);
function my_user_new_form($form_type) {
    ?>
    <script type="text/javascript">
        document.addEventListener('DOMContentLoaded', function() {
            // メールフィールド行を取得
            var emailRow = document.querySelector('#email').closest('tr');
            if (emailRow) {
                // 'form-required'クラスを削除
                emailRow.classList.remove('form-required');
                // 説明を削除
                var description = emailRow.querySelector('.description');
                if (description) {
                    description.remove();
                }
            }

            // 新しいユーザー追加フォームの場合、通知メール送信オプションをデフォルトでオフにする
            <?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
                var sendUserNotification = document.querySelector('#send_user_notification');
                if (sendUserNotification) {
                    sendUserNotification.checked = false;
                }
            <?php endif; ?>
        });
    </script>
    <?php
}

user_profile_update_errorsフックを使って、メールアドレスが空の場合でもエラーメッセージが出ないように。
my_user_profile_update_errors関数がエラーメッセージを削除。

document.querySelector('#email').closest('tr') でメールアドレス入力フィールドの行 (<tr>) を取得。その行から form-required クラスを削除し、説明文も削除。

新しいユーザーを追加するときに、通知メールを送るオプションのチェックボックスをデフォルトでオフ。form_typeadd-new-user の場合のみ行う。

スポンサーリンク
スポンサーリンク
技術
スポンサーリンク
この記事を書いた人
いちじく

20代前半で一度はあきらめた海外留学・移住の夢を叶えるために、台湾ワーキングホリデー、ギリホリを目指してリモートワークでの安定収入を目指しています。

いちじくをフォローする

コメント

タイトルとURLをコピーしました