web-dev-qa-db-fra.com

Comment définir une longueur minimale pour le nom d'utilisateur dans Woocommerce?

Je dois définir une longueur minimale pour le nom d'utilisateur sur un site Web qui utilise WooCommerce.

Dans une installation WordPress "standard" (sans WooCommerce, je veux dire), je pourrais utiliser un extrait de code comme celui-ci:

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 );

Malheureusement, cela ne fonctionne pas (je l'ai simplement testé avec une fausse inscription) car WooCommerce a son propre formulaire de registre et ses propres crochets .

J'ai trouvé une solution palliative qui suggère de modifier le fichier form-login.php en ajoutant un attribut de modèle aux champs de saisie <input pattern=".{3,}" required title="3 characters minimum">, mais je ne veux pas suivre cette procédure, je préférerais le modifier mon functions.php à la place.

J'ai trouvé un plugin appelé "Remplacement du nom d'utilisateur réseau" } mais "il n'a pas été mis à jour depuis plus de 2 ans" et il fait référence à un réseau et je pense que cela ne convient pas à ma situation.

J'ai également essayé de trouver un autre plugin dans le répertoire de plugins WordPress mais je n'ai rien trouvé.

Toute suggestion?

2
Marco Panichi

Ok j'ai trouvé la solution.

Parce que, comme je l'ai dit, WooCommerce a ses propres crochets, tout d'abord J'ai cherché un crochet WooCommerce pour l'enregistrement .

J'ai découvert l'existence d'un hook très similaire à celui utilisé par WordPress:woocommerce_registration_errors. Évidemment, cela fonctionne de la même manière.

Ensuite, j'ai simplement remplacé le hook WordPress par celui de WooCommerce. Voici l'extrait final que vous devez insérer dans votre fichier 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;
}
2
Marco Panichi