サポート » プラグイン » bbpressのパスワード更新でパスワード文字数に制限を設けたい

  • 解決済 satoume

    (@satoume)


    お世話になっております。
    Wordpress初心者です。
    また、今回は以下の内容で教えてください。

    現在、bbpressを用いて新しくフォーラムページを立ち上げようとしています。
    これは各ユーザーがログインしないと見れない仕組みにしようとしています。

    今回は以下の問題の解決方法を教えてください。

    各ユーザーはbbpressのユーザープロフィールからパスワードを自由に変更できますが、
    ここでも、例えばパスワードを1文字で設定しても更新されてしまいます。
    bbpressバージョン 2.5.13

    ですので、
    文字数が7文字以上または8文字以上で設定しないと更新できないようにしたいと考えています。
    どのようにすればいいか、アドバイスをお願いいたします。


    実は、Wordpress側のパスワード設定でも同様の問題がありましたので、
    こちらに投稿させていただき、解決方法を教えていただきました。
    こちらです。
    ユーザーのログインパスワードの文字数に制限を設けたい

    この教えていただいた設定をbbpress側でも反映できればと、
    色々試して頑張りましたが、私にはまだ無理なようです。

    bbpress側にも同様の制限を設けるにはどうしたらいいか、お知恵をください。
    よろしくお願いいたします。

    • このトピックは2年、 6ヶ月前にsatoumeが編集しました。理由: bbpressバージョンを記載
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • CG

    (@du-bist-der-lenz)

    参考になった方法もあることですので、「色々試して頑張りました」の経緯と、結果を説明してください。間違ってなくて些細な思い違いもありえますし、ムダを省くためにも、先へ進めやすくするために。「私にはまだ無理なようです」の指摘と、誘導がしやすいと思われます。

    CG様
    確認していただきありがとうございます。

    試した内容は以下となります。

    1)
    前回教えていただいたWordpress側のパスワード更新時に
    文字制限を加えることのできるコードに以下の記述を追加してみました。

    add_action( ‘Update Profile’, ‘bbpress’ );

    つまり以下のコードをtwentysixteen-child(チャイルドテーマ)内の
    functions.phpに追記してみました。

    function my_validate_password_reset( $errors, $user ) {
    	if ( isset( $_POST['pass1'] ) ) {
    		$pass1 = $_POST['pass1'];
    		if ( strlen( $pass1 ) < 8 ) {
    			$errors->add( 'password_error', 'エラー: パスワードは 8 文字以上で設定してください。' );
    		}
    	}
    }
    add_action( 'validate_password_reset', 'my_validate_password_reset', 10, 2 );
    add_action( 'Update Profile', 'my_validate_password_reset' );

    結果、bbpress側のプロフィール内で更新できるパスワードに
    文字数制限は働きませんでした。

    ‘Update Profile’, ‘my_validate_password_reset’を追記するのが
    正しいのかどうも、まだ手さぐりです。

    bbpress側のパスワード入力フォームをform-user-edit.phpの中に発見しました。
    \wp-content\plugins\bbpress\templates\default\bbpress\form-user-edit.php

    このファイルの下方に、「プロフィール更新」のsubmitボタンがあり、
    そこに( ‘Update Profile’, ‘bbpress’ )とあったので、同じように追記した次第です。

    2)
    次に、bbpress側にもfunctions.phpがあるのを発見しました。

    bbpress側のfunctions.phpは以下のように沢山ありました。
    \wp-content\plugins\bbpress\includes\users\functions.php
    \wp-content\plugins\bbpress\templates\default\bbpress-functions.php
    \wp-content\plugins\bbpress\includes\topics\functions.php
    \wp-content\plugins\bbpress\includes\search\functions.php
    \wp-content\plugins\bbpress\includes\replies\functions.php
    \wp-content\plugins\bbpress\includes\forums\functions.php
    \wp-content\plugins\bbpress\includes\extend\buddypress\functions.php
    \wp-content\plugins\bbpress\includes\core\template-functions.php
    \wp-content\plugins\bbpress\includes\core\functions.php
    \wp-content\plugins\bbpress\includes\common\functions.php
    \wp-content\plugins\bbpress\includes\admin\functions.php

    いずれも、以下のコードを記述すると、フォーラムページは真っ白になってしいます。

    function my_validate_password_reset( $errors, $user ) {
    	if ( isset( $_POST['pass1'] ) ) {
    		$pass1 = $_POST['pass1'];
    		if ( strlen( $pass1 ) < 8 ) {
    			$errors->add( 'password_error', 'エラー: パスワードは 8 文字以上で設定してください。' );
    		}
    	}
    }
    add_action( 'Update Profile', 'my_validate_password_reset', 10, 2 );

    行った作業は以上です。
    確認の方向性としては正しいですか?
    引き続き、ご確認いただければありがたいです。
    よろしくお願いします。

    CG

    (@du-bist-der-lenz)

    チャイルドテーマからではなく、TwentySixteen で行った場合も同様という結果でしょうか。

    WordPress で機能のカスタマイズをするには、PHP の知識は必須です。
    厳しいことを書きますが、WordPress や PHP に関しては入門書等で学ぶことをお勧めします。
    とりあえず、下記のコードで出来そうですが、コピペしただけでなく理解した上で使用してください。コードに誤りがあるかもしれませんし、私が根本的に間違えている可能性もあります。

    function my_user_profile_update_errors( $errors, $update, $user ) {
    	if ( $update ) {
    		$pass = isset( $_POST['pass1'] ) ? trim( $_POST['pass1'] ) : null;
    		// パスワードの変更がない場合、値は空(null)なので、空の場合はエラーにしない。
    		if ( ! empty( $pass ) && strlen( $pass ) < 7 ) {
    			$errors->add( 'pass', '<strong>エラー</strong>: パスワードは 7 文字以上です。' );
    		}
    	}
    	return $errors;
    }
    add_action( 'user_profile_update_errors', 'my_user_profile_update_errors', 10, 3 );
    • この返信は2年、 6ヶ月前にishitakaが編集しました。

    CG様、ishitaka様
    早速ご確認くださり本当にありがとうございます。
    家の用事を済ませて、ようやく時間ができましたので、
    今からいただいた内容で試してみます。

    >CG様
    前回の内容はTwentySixteenでは行っていませんでした。

    >ishitaka様
    今回何度もご指導をいただきながら、WordpressとPHPを覚える必要性を痛感しました。
    何とかしていきたいと思います。
    またコードをくださり本当にありがとうございます。
    結果について、また追って報告させていただきます。

    取り急ぎ、お礼を申し上げたく、返信を書かせていただきました。
    本当にありがとうございます。(感謝)

    • この返信は2年、 5ヶ月前にsatoumeが編集しました。

    ishitaka様

    返信してくださったコードを適用してみました。
    今回も完璧にうまく動きました!
    エラーも問題なく表示されます。
    何とお礼を申し上げたらいいか本当にありがとうございました。
    WordpressとPHPを覚えていきたいと思いますので、
    今後ともよろしくお願いいたします。
    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「bbpressのパスワード更新でパスワード文字数に制限を設けたい」には新たに返信することはできません。