wordpressのユーザ登録権限を一般開放する際、
(たとえば会員制サイトを制作する時など)
パスワード再発行時に使用するフォームにて、
入力可能な文字数に制限を掛けるスクリプトを作った。
wordpressの仕様では、ユーザが設定できるパスワードについて
「7文字以上でご入力ください」とヒント欄にて触れているものの、
実際には制限が掛かってない。自由。
だが許されざる自由も、まれにある。
Login Security Solutionプラグインを導入する手もあるが、
各々に影響の出るシステムを導入するよりは、
登録画面のみにjQueryを走らせた方が楽かなと。
という訳で以下をfunctions.phpに記述。
function edit_resetpass_login(){
$input_act = filter_input(INPUT_GET, 'action');
if($input_act === 'rp' || $input_act === 'resetpass'){
?>
<script type="text/javascript">
jQuery(function(){
var btSub = jQuery('#wp-submit');
jQuery('#pass2').keyup(function() {
if(jQuery(this).val().length > 6){
btSub.removeAttr('disabled').val('パスワードを再設定');
}else{
btSub.attr('disabled', 'disabled').val('7文字以上ご入力ください');
}
}).keyup();
});
</script>
<?php
}
}
add_action('login_head', 'edit_resetpass_login');
注意
プロフィール更新などを一般公開している環境では、そこにも上記スクリプトを読ませなければならない。
下記の対策が必要。
- php部の分岐とadd_actionを用いて、プロフィール更新画面のみに適用されるよう修正
- JS部のjQuery('#wp-submit')をjQuery('#submit')に変更し、0文字でもボタンが押せるように修正