добавить возвращаемое значение фильтра


function validate_username( $username ) {
    $sanitized = sanitize_user( $username, true );
    $valid = ( $sanitized == $username );

    return apply_filters( 'validate_username', $valid, $username );
}

В wp-includes/registration.php я хочу измениться

$sanitized = sanitize_user( $username, true );

До

$sanitized = sanitize_user( $username, false );

Я не смог успешно написать add_filter там, почему-то он не работает. Не могли бы вы написать фильтр для этого, пожалуйста?

 2
Author: Ünsal Korkmaz, 2010-12-10

2 answers

Вот так:

function my_validate_username( $valid, $username ) {
    $sanitized = sanitize_user( $username, false );
    $valid = ( $sanitized == $username );

    return $valid;
}

add_filter('validate_username', 'my_validate_username', 10, 2);
 2
Author: Denis de Bernardy, 2010-12-10 12:00:32

Таким образом, проблема вызвана этой строкой в wp-includes/user.php :

$user_login = дезинфицирующий пользователь($user_login, true);

, что делает sanitize_true строгим, что сводится к ascii.

Измените значение на false, чтобы обойти, кто знает, какие еще ошибки это вызовет, поскольку, по-видимому, нелатинские логины в wordpress не поддерживаются, см. Эту тему:

Http://bbpress.org/forums/topic/accents-in-username#post-19037

 -1
Author: Dmytri Keiner, 2011-08-04 20:33:37