WordPress のパスワードの文字数は 新規登録時では24文字自動生成していますが ユーザーはたいてい自分用のに変更していると思います。
パスワードリセット時では「ヒント:パスワードは少なくとも7文字以上であるべきです。」と表示していますが 制限がかっていませんので1文字でも登録できてしまいます。
※原文ではは「$hint = __( ‘Hint: The password should be at least twelve characters long. ・・」と12文字以上になってます。
何文字以上がセーフなのかというのは置いておいても1文字でも登録できてしまうのはまずいので パスワードの文字数制限をかけるスクリプトを用意しました。
パスワードを変更できる所は「ユーザー新規登録」「ユーザー編集」「ユーザープロフィール」「パスワードリセット」画面です。
それぞれ jQuery で画面上でチェックして 少ない場合は ボタンを押せなくするようにしました。
コード
以下のコードを my-plugin.php に張り付けてみてください。
/* * パスワード再発行時に文字数制限を掛ける * for wp-login.php * * License: GPLv2 or later */ function nendebcom_wp_login_password_length_check(){ //パスワード長さ指定 $pass_length = 7; $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : ''; if ( isset( $_GET['key'] ) ) { $action = 'resetpass'; } if( $action == 'rp' || $action == 'resetpass' ){ ?> <script type="text/javascript"> jQuery(document).ready(function($) { $(function(){ var submit_btn = $('#wp-submit'); $('#pass1-text').keyup(function() { //脆弱確認チェックボックス表示 pw_weak_class = $('.pw-weak').attr('style'); //脆弱確認チェックボックス状態 pw_weak_checkbox = $("[name=pw_weak]").prop("checked"); //パスワード文字数 pass_length = $('#pass1-text').val().length; //文字数チェック if( pass_length >= <?php echo $pass_length; ?> ){ if( pw_weak_checkbox == true || pw_weak_class == 'display: none;' ) { submit_btn.removeAttr('disabled').val('パスワードをリセット'); } if( pw_weak_checkbox == false && pw_weak_class == 'display: block;' ){ submit_btn.attr('disabled', 'disabled').val('パスワードをリセット'); } }else{ submit_btn.attr('disabled', 'disabled').val('<?php echo $pass_length; ?>文字以上入力してください'); } }).keyup(); $('input[name="pw_weak"]').change(function() { //脆弱確認チェックボックス表示 pw_weak_class = $('.pw-weak').attr('style'); //脆弱確認チェックボックス状態 pw_weak_checkbox = $("[name=pw_weak]").prop("checked"); //パスワード文字数 pass_length = $('#pass1-text').val().length; //文字数チェック if( pass_length >= <?php echo $pass_length; ?> ){ if( pw_weak_checkbox == true || pw_weak_class == 'display: none;'){ submit_btn.removeAttr('disabled').val('パスワードをリセット'); } if( pw_weak_checkbox == false && pw_weak_class == 'display: block;' ){ submit_btn.attr('disabled', 'disabled').val('パスワードをリセット'); } }else{ submit_btn.attr('disabled', 'disabled').val('<?php echo $pass_length; ?>文字以上入力してください'); } }); }); }); </script> <?php } } add_action('login_footer', 'nendebcom_wp_login_password_length_check'); /** * パスワードヒント 変更 * * @since 4.1.0 * apply_filters( 'password_hint', $hint ); * @param string $hint The password hint text. * * License: GPLv2 or later */ function nendebcom_password_hint_word( $hint ) { //パスワード長さ指定 $pass_length = 7; $hint = 'ヒント: パスワードは' . $pass_length . '文字以上にしてください。より強固にするためには大文字と小文字、数字、 ! " ? $ % ^ & ) のような記号を使いましょう。'; return $hint; } add_filter( 'password_hint', 'nendebcom_password_hint_word' ); /* * ユーザー新規・編集 パスワード長さチェック * for user-new.php profile.php user-edit.php * * License: GPLv2 or later */ function nendebcom_profile_password_length_check(){ global $hook_suffix; //パスワード長さ指定 $pass_length = 7; if( !$hook_suffix ) return; //新規 if( $hook_suffix == 'user-new.php' ){ $submit_btn_id = '#createusersub'; $submit_btn_txt = '新規ユーザーを追加'; } //プロフィール・ユーザーを編集 if( $hook_suffix == 'profile.php' || $hook_suffix == 'user-edit.php' ){ $submit_btn_id = '#submit'; $submit_btn_txt = 'ユーザーを更新'; } ?> <script type="text/javascript"> jQuery(document).ready(function($) { $(function(){ var submit_btn = $('<?php echo $submit_btn_id;?>'); $('#pass1-text').keyup(function() { //脆弱確認チェックボックス表示 pw_weak_class = $('.pw-weak').attr('style'); //脆弱確認チェックボックス状態 pw_weak_checkbox = $("[name=pw_weak]").prop("checked"); //パスワード設定 アクティブ pass_wp_pwd = $('.wp-pwd').attr('style'); //パスワード文字数 pass_length = $('#pass1-text').val().length; //文字数チェック if( pass_length >= <?php echo $pass_length; ?> ){ if( pw_weak_checkbox == true || pw_weak_class == 'display: none;' ) { submit_btn.removeAttr('disabled').val('<?php echo $submit_btn_txt;?>'); }else{ submit_btn.val('<?php echo $submit_btn_txt;?>'); } if( pw_weak_checkbox == false && pw_weak_class == 'display: block;' ){ submit_btn.attr('disabled', 'disabled').val('<?php echo $submit_btn_txt;?>'); }else{ submit_btn.val('<?php echo $submit_btn_txt;?>'); } }else{ if( pass_wp_pwd != 'display: none;' ){ submit_btn.attr('disabled', 'disabled').val('<?php echo $pass_length; ?>文字以上入力してください'); } } }).keyup(); $('input[name="pw_weak"]').change(function() { //脆弱確認チェックボックス表示 pw_weak_class = $('.pw-weak').attr('style'); //脆弱確認チェックボックス状態 pw_weak_checkbox = $("[name=pw_weak]").prop("checked"); //文字数チェック if($('#pass1-text' ).val().length >= <?php echo $pass_length; ?>){ if( pw_weak_checkbox == true || pw_weak_class == 'display: none;'){ submit_btn.removeAttr('disabled').val('<?php echo $submit_btn_txt;?>'); } if( pw_weak_checkbox == false && pw_weak_class == 'display: block;' ){ submit_btn.attr('disabled', 'disabled').val('<?php echo $submit_btn_txt;?>'); } }else{ submit_btn.attr('disabled', 'disabled').val('<?php echo $pass_length; ?>文字以上入力してください'); } }); }); }); </script> <?php } add_action( 'admin_footer-user-new.php', 'nendebcom_profile_password_length_check' ); add_action( 'admin_footer-profile.php', 'nendebcom_profile_password_length_check' ); add_action( 'admin_footer-user-edit.php', 'nendebcom_profile_password_length_check' );
※制限文字数を変えたい場合は「//パスワード長さ指定」のところを変更してください。(3か所あります)
参考
login_footer | Hook | WordPress Developer Resources
https://developer.wordpress.org/reference/hooks/login_footer/
password_hint | Hook | WordPress Developer Resources
https://developer.wordpress.org/reference/hooks/password_hint/
admin_footer-{$hook_suffix} | Hook | WordPress Developer Resources
https://developer.wordpress.org/reference/hooks/admin_footer-hook_suffix/