web-dev-qa-db-fra.com

Changer les noms des indicateurs de force de mot de passe?

Est-il possible de changer les étiquettes pour "Faible, Moyen, Fort" etc ... dans l'indicateur de mot de passe utilisé dans le profil utilisateur? On m'a demandé de changer le mot "Faible" en "OK" car ce niveau de mots de passe est acceptable pour nos abonnés. Y a-t-il un filtre que je peux accrocher?

1
LBF

J'ai pu le réparer avec cette méthode. Est-ce bien/mal? Cela fonctionne, mais je serais intéressé par les commentaires au cas où cela pourrait avoir des conséquences inattendues.

add_filter('gettext', 'translate_text'); 
add_filter('ngettext', 'translate_text');

function translate_text($translated) { 
$translated = str_ireplace('Very Weak', 'Bad', $translated); 
$translated = str_ireplace('Weak', 'OK', $translated); 

return $translated; 
}
0
LBF

Ajouter ceci à mon fichier function.php dans le dossier du thème de l'enfant l'a fait pour moi:

add_action( 'wp_enqueue_scripts', 'my_strength_meter_localize_script' );
function my_strength_meter_localize_script() {
    wp_localize_script( 'password-strength-meter', 'pwsL10n', array(
        'empty'    => __( 'But... it\'s empty!', 'theme-domain' ),
        'short'    => __( 'Too short!', 'theme-domain' ),
        'bad'      => __( 'Not even close!', 'theme-domain' ),
        'good'     => __( 'You are getting closer...', 'theme-domain' ),
        'strong'   => __( 'Now, that\'s a password!', 'theme-domain' ),
        'mismatch' => __( 'They are completely different, come on!', 'theme-domain' )
    ) );
}

Source

3
dragoeco

Cet article sur le Web Tips s'intègre dans quelques actions et filtres de choix pour modifier la tolérance de mot de passe, mais les commentateurs semblaient avoir quelques problèmes avec cela, alors prenez ceci mordre avec un grain de sel.

// functions.php

add_action( 'user_profile_update_errors', 'validateProfileUpdate', 10, 3 );
add_filter( 'registration_errors', 'validateRegistration', 10, 3 );
add_action( 'validate_password_reset', 'validatePasswordReset', 10, 2 );

/**
 * validate profile update
 *
 * @author  Joe Sexton <[email protected]>
 * @param   WP_Error $errors
 * @param   boolean $update
 * @param   object $user raw user object not a WP_User
 */
public function validateProfileUpdate( WP_Error &$errors, $update, &$user ) {
    return validateComplexPassword( $errors );
}

/**
 * validate registration
 *
 * @author  Joe Sexton <[email protected]>
 * @param   WP_Error $errors
 * @param   string $sanitized_user_login
 * @param   string $user_email
 * @return  WP_Error
 */
function validateRegistration( WP_Error &$errors, $sanitized_user_login, $user_email ) {
    return validateComplexPassword( $errors );
}

/**
 * validate password reset
 *
 * @author  Joe Sexton <[email protected]>
 * @param   WP_Error $errors
 * @param   stdClass $userData
 * @return  WP_Error
 */
function validatePasswordReset( WP_Error &$errors, $userData ) {
    return validateComplexPassword( $errors );
}

/**
 * validate complex password
 *
 * @author  Joe Sexton <[email protected]>
 * @param   WP_Error $errors
 * @param   stdClass $userData
 * @return  WP_Error
 */
function validateComplexPassword( $errors ) {
    $password = ( isset( $_POST[ 'pass1' ] ) && trim( $_POST[ 'pass1' ] ) ) ? $_POST[ 'pass1' ] : null;

    // no password or already has password error
    if ( empty( $password ) || ( $errors->get_error_data( 'pass' ) ) )
        return $errors;

    // validate
    if ( ! isStrongPassword( $password ) )
        $errors->add( 'pass', '<strong>ERROR</strong>: Your password must contain at least 8 characters.' ); // your complex password error message

    return $errors;
}

/**
 * isStrongPassword
 *
 * @author  Joe Sexton <[email protected]>
 * @param   string $password
 * @return  boolean
 */
function isStrongPassword( $password ) {
    return strlen( $password ) >= 8; // your complex password algorithm
}

Si vous ne parvenez pas à utiliser la route de liaison ou si vous avez une page de connexion personnalisée, , cet article sur Tuts Plus contient un didacticiel pratique pour utiliser le script existant sur vos propres formulaires.

Ajouter à functions.php:

wp_enqueue_script( 'password-strength-meter' );

Dans votre HTML:

<form>
    <input type="password" name="password" />
    <input type="password" name="password_retyped" />
    <span id="password-strength"></span>
    <input type="submit" disabled="disabled" value="Submit" />
</form>

Le scénario:

function checkPasswordStrength( $pass1,
                                $pass2,
                                $strengthResult,
                                $submitButton,
                                blacklistArray ) {
    var pass1 = $pass1.val();
    var pass2 = $pass2.val();

    // Reset the form & meter
    $submitButton.attr( 'disabled', 'disabled' );
    $strengthResult.removeClass( 'short bad good strong' );

    // Extend our blacklist array with those from the inputs & site data
    blacklistArray = blacklistArray.concat( wp.passwordStrength.userInputBlacklist() )

    // Get the password strength
    var strength = wp.passwordStrength.meter( pass1, blacklistArray, pass2 );

    // Add the strength meter results
    switch ( strength ) {

        case 2:
            $strengthResult.addClass( 'bad' ).html( pwsL10n.bad );
            break;

        case 3:
            $strengthResult.addClass( 'good' ).html( pwsL10n.good );
            break;

        case 4:
            $strengthResult.addClass( 'strong' ).html( pwsL10n.strong );
            break;

        case 5:
            $strengthResult.addClass( 'short' ).html( pwsL10n.mismatch );
            break;

        default:
            $strengthResult.addClass( 'short' ).html( pwsL10n.short );

    }

    // The meter function returns a result even if pass2 is empty,
    // enable only the submit button if the password is strong and
    // both passwords are filled up
    if ( 4 === strength && '' !== pass2.trim() ) {
        $submitButton.removeAttr( 'disabled' );
    }

    return strength;
}

jQuery( document ).ready( function( $ ) {
    // Binding to trigger checkPasswordStrength
    $( 'body' ).on( 'keyup', 'input[name=password1], input[name=password2]',
        function( event ) {
            checkPasswordStrength(
                $('input[name=password]'),         // First password field
                $('input[name=password_retyped]'), // Second password field
                $('#password-strength'),           // Strength meter
                $('input[type=submit]'),           // Submit button
                ['black', 'listed', 'Word']        // Blacklisted words
            );
        }
    );
});
2
feelinferrety

Le texte "Faible" est transmis via la fonction _x, qui appelle translate_with_gettext_context. J'essaierais donc les solutions suivantes:

add_filter( 'gettext_with_context', 'wpse199813_change_password_indicatior', 10, 4 );

function wpse199813_change_password_indicatior($translations, $text, $context, $domain){

    if( $text == "Weak" && $context == "password strength")
        return "OK";

    return $translations;
}
1
czerspalace

Vous pouvez le faire correctement dans votre fichier de localisation de thème.

Ouvrez le fichier *.pot et créez les traductions pour les étiquettes dont vous avez besoin, e. g. OK pour Weak.

Voir password-strength-meter autour de la ligne #366 dans /wp-includes/script-loader.php pour la référence (mais n'y changez rien).

Mise à jour :

J'ai trouvé la solution en utilisant jQuery pour un problème similaire, mais vous devez simplifier ce code pour n'utiliser qu'un seul compteur de mot de passe: Comment utiliser le script wordpress par défaut Password Strength Meter . Voir aussi /wp-admin/js/user-profile.js pour référence car cette solution est assez ancienne.

0
Max Yudin