users – Cambiar el slug del autor de apodo a ID

Pregunta:

Cambié la opción de registro predeterminada al permitir que las personas se registren con sus direcciones de correo electrónico. También tienen la opción de agregar su nombre, apellido, pero no es obligatorio.

// Allow email instead of nickname for login 
add_filter('authenticate', function($user, $email, $password){

    //Check for empty fields
    if(empty($email) || empty ($password)){        
        //create new error object and add errors to it.
        $error = new WP_Error();
        if(empty($email)){ //No email
            $error->add('empty_username', __('<strong>Viga</strong>: Unustasid sisestada e-posti aadressi'));
        }
        else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
            $error->add('invalid_username', __('<strong>Viga</strong>: E-posti aadress on vale.'));
        }
        if(empty($password)){ //No password
            $error->add('empty_password', __('<strong>Viga</strong>: Unustasid sisestada parooli'));
        }
        return $error;
    }

    //Check if user exists in WordPress database
    $user = get_user_by('email', $email);

    //bad email
    if(!$user){
        $error = new WP_Error();
        $error->add('invalid', __('<strong>Viga</strong>: E-posti aadress või parool ei ole õige.'));
        return $error;
    }
    else{ //check password
        if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password
            $error = new WP_Error();
            $error->add('invalid', __('<strong>Viga</strong>: E-posti aadress või parool ei ole õige.'));
            return $error;
        }else{
            return $user; //passed
        }
    }
}, 20, 3);

Pero esto plantea un problema. En la página del autor, las direcciones de correo electrónico de los usuarios se vuelven públicas:

http://example.com/author/email-address/

Sé cómo puedo cambiar el / autor / parte de la URL:

add_action('init', 'cng_author_base');
function cng_author_base() {
    global $wp_rewrite;
    $author_slug = 'autor'; // change slug name
    $wp_rewrite->author_base = $author_slug;
}

pero no cómo cambiar el nombre de usuario para mostrar la identificación del autor. Se puede hacer?

Respuesta:

Sorprendido de ver esto sin respuesta durante tanto tiempo. Esto es bastante simple de hacer con un simple bloque de código:

function set_my_nice_name() {
    global $wpdb;
    $user_table = $wpdb->prefix . 'users';
    $wpdb->query("UPDATE $user_table SET `user_nicename`=`ID`");
}
add_action('init', 'set_my_nice_name');

Esto funciona porque la parte visible de un slug de autor (o slug de perfil en BuddyPress) usa la columna user_nicename en la tabla de usuarios y esto simplemente copia el ID de usuario en esa columna para todos en la base de datos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım