web-dev-qa-db-ja.com

Woocommerceでユーザー名の最小長を設定する方法

WooCommerceを使用するWebサイトで、ユーザー名の最小長を設定する必要があります。

「標準」のWordPressインストール(WooCommerceなし)では、このようなスニペットを使うことができます。

function my_registration_errors( $errors, $sanitized_user_login, $user_email ) 
{
    if ( strlen( $sanitized_user_login ) < 5 ) {
        $errors->add( 'username_too_short', __( '<strong>ERROR</strong>: Username must be at least 5 characters.' ) );
    }
    return $errors;
}
add_filter( 'registration_errors', 'my_registration_errors', 10, 3 );

WooCommerceには独自の登録フォームとフックがあるため、残念ながら動作しません(私は単純に偽の登録でテストしました)。

緩和的な解決策 は入力フィールド<input pattern=".{3,}" required title="3 characters minimum">にパターン属性を追加するform-login.phpファイルを編集することを提案していますが、私はこの手順に従うことを望まないので、私は自分の関数を編集したいです代わりに.php.

"Network Username Restrictions Override" というプラグインを見つけました - しかし "それは2年以上かけて更新されていません"そしてそれはネットワークを指しており、私の状況には適さないと思います。

私は 他のプラグインを見つけようとしました WordPressプラグインディレクトリで/私は何も見つかりませんでした。

なにか提案を?

2
Marco Panichi

わかりました私は解決策を見つけました。

私が言ったように、WooCommerceには独自のフックがあるので、まず最初に 登録についてWooCommerceのフックを検索しました

私はWordPressで使われているものと非常によく似たフックの存在を発見しました:woocommerce_registration_errors。明らかにそれは同じように機能します。

それから私は単にWordPressフックをWooCommerceフックに置き換えました。これがあなたのfunctions.phpファイルにを挿入しなければならない最後のスニペットです:

add_filter( 'woocommerce_registration_errors', 'my_registration_errors', 10, 3 );
function my_registration_errors( $errors, $sanitized_user_login, $user_email ) 
{
    if ( strlen( $sanitized_user_login ) < 5 ) {
        $errors->add( 'username_too_short', __( '<strong>ERROR</strong>: Username must be at least 5 characters.' ) );
    }
    return $errors;
}
1
Marco Panichi