Setează "Afișează numele public ca" să fie numele de utilizator implicit

10 ian. 2016, 22:05:02
Vizualizări: 15.7K
Voturi: 3

Site-ul meu WordPress afișează în prezent informațiile de identificare ale utilizatorilor după PRENUME + NUME.

Majoritatea preferă să fie cunoscuți prin numele lor de utilizator. Le-am explicat cum să schimbe manual setarea "Afișează numele public ca" (prin setările de utilizator), dar acest lucru nu este ideal.

Doresc ca noii utilizatori să fie afișați implicit după numele de utilizator. Este important să se reflecte și în plugin-urile care folosesc proprietatea "Afișează numele public ca".

Cum pot realiza acest lucru?

4
Comentarii

Ai putea modifica tema ta pentru a afișa întotdeauna numele de utilizator în loc de orice altceva.

flomei flomei
10 ian. 2016 23:13:05

În acest caz, nu este vorba doar despre temă, ci și despre câteva plugin-uri pe care le folosesc

CodyBugstein CodyBugstein
10 ian. 2016 23:13:50

Aceasta ar fi o informație utilă pentru primul tău post, te rog adaugă această informație.

flomei flomei
10 ian. 2016 23:15:51

@flomei ok, l-am adăugat

CodyBugstein CodyBugstein
10 ian. 2016 23:16:49
Toate răspunsurile la întrebare 3
12

Dacă dorești să aplici această setare pentru toți utilizatorii viitori, atașează-te la evenimentul user_register și actualizează-l acolo.

Obține obiectul WP_User folosind get_userdata și actualizează informațiile utilizatorului cu wp_update_user, setând noul nume afișat.

add_action( 'user_register', 'wpse_20160110_user_register', 10, 1 );

function wpse_20160110_user_register ( $user_id ) {

    // obține datele utilizatorului

    $user_info = get_userdata( $user_id );

    // alegem numele afișat implicit

    $display_publicly_as = $user_info->user_login;

    // actualizează numele afișat

    wp_update_user( array ('ID' => $user_id, 'display_name' =>  $display_publicly_as));
}

Dacă dorești să setezi această valoare la fiecare autentificare, atașează-te la wp_login folosind PHP_INT_MAX.

function wpse_20160110_wp_login ( $user_login, $user ) {

    wp_update_user(array('ID' => $user->ID, 'display_name' => $user_login));

}

add_action('wp_login', 'wpse_20160110_wp_login', PHP_INT_MAX, 2);
10 ian. 2016 23:22:30
Comentarii

Mulțumesc! Unde ar trebui să pun acest cod?

CodyBugstein CodyBugstein
11 ian. 2016 21:49:26

Fie într-un plugin, fie în functions.php, dar dacă îl pui în tema ta, există posibilitatea să fie suprascris.

jgraup jgraup
11 ian. 2016 22:28:51

Am încercat partea de login și nu funcționează pentru a schimba numele afișat

CodyBugstein CodyBugstein
17 ian. 2016 08:18:12

Am încercat acțiunea la înregistrare și funcționează!

CodyBugstein CodyBugstein
17 ian. 2016 08:23:26

Poți verifica mai întâi dacă hook-ul funcționează? Apoi asigură-te că datele vin corect. Și în final că prioritatea este suficient de târzie? Îmi amintesc că a funcționat pentru mine când l-am testat.

jgraup jgraup
17 ian. 2016 16:12:15

Cum pot verifica dacă prioritatea este suficient de târzie? (scuze, sunt nou în WordPress)

CodyBugstein CodyBugstein
17 ian. 2016 23:55:40

0/1 este devreme. 10 este implicit. 99 este târziu, ceea ce înseamnă că rulează după majoritatea hook-urilor. Ai folosi 99 dacă un alt hook setează acea informație și vrei să te asiguri că ești ultimul care setează metadatele. Dar din nou, verifică dacă este apelat, verifică dacă datele sunt setate înainte să te îngrijoreze prioritatea.

jgraup jgraup
18 ian. 2016 03:11:31

Interesant, dar cum mă asigur că sunt ultimul? Nu pot să verific manual sute de fișiere

CodyBugstein CodyBugstein
19 ian. 2016 16:27:03

https://wordpress.org/plugins/query-monitor/ vă va arăta hook-urile și prioritatea.

jgraup jgraup
19 ian. 2016 17:02:47

Tocmai am testat din nou acest lucru. Am actualizat exemplul pentru a folosi PHP_INT_MAX, care ar trebui să fie ultima posibilă dată pentru utilizarea acestui hook. Dacă nu funcționează, înseamnă că există altceva în joc.

jgraup jgraup
19 ian. 2016 17:26:07

Poți să-l atașezi la hook-ul 'profile_update', astfel încât să fie executat la fiecare actualizare a utilizatorilor.

Marco Marsala Marco Marsala
26 ian. 2018 09:33:46

@MarcoMarsala Am încercat să folosesc hook-ul 'profile_update' și am intrat într-o buclă infinită. =.= Presupun că asta se întâmplă pentru că această funcție actualizează și ea profilul.

Betty Betty
3 mar. 2019 16:28:36
Arată celelalte 7 comentarii
0

Pentru a seta programatic numele afișat atât la înregistrare cât și la actualizarea profilului, evitând bucla infinită întâlnită de Betty, trebuie să verifici dacă numele afișat este deja setat așa cum este necesar.

add_action( 'user_register', 'set_login_as_displayname' );
add_action( 'profile_update', 'set_login_as_displayname' );

function set_login_as_displayname( $user_id )
{
    $data = get_userdata( $user_id );

    if ($data->user_login != $data->display_name) {
        wp_update_user( array ('ID' => $user_id, 'display_name' =>  $data->user_login));
    }
}
28 mai 2019 14:22:31
0

Pentru a actualiza la înregistrare și la actualizarea profilului:

function set_display_name_to_first_last_name( $user_id ) {
    $user_info = get_userdata( $user_id );

    // Construiește numele complet folosind prenumele și numele.
    $full_name = trim( $user_info->first_name . ' ' . $user_info->last_name );

    // Dacă numele complet construit nu este gol și este diferit de numele afișat curent, actualizează-l.
    if ( ! empty( $full_name ) && $full_name !== $user_info->display_name ) {
        wp_update_user( array( 'ID' => $user_id, 'display_name' => $full_name ) );
    }
}

add_action( 'user_register', 'set_display_name_to_first_last_name' );
add_action( 'profile_update', 'set_display_name_to_first_last_name' );

Pentru a actualiza utilizatorii existenți (rulează o singură dată):

function update_existing_users_display_names() {
    // Obține toți utilizatorii
    $users = get_users();

    foreach ( $users as $user ) {
        // Construiește numele complet folosind prenumele și numele.
        $full_name = trim( $user->first_name . ' ' . $user->last_name );

        // Dacă numele complet construit nu este gol și este diferit de numele afișat curent, actualizează-l.
        if ( ! empty( $full_name ) && $full_name !== $user->display_name ) {
            wp_update_user( array( 'ID' => $user->ID, 'display_name' => $full_name ) );
        }
    }
}

// Apelează funcția pentru a efectua actualizarea.
update_existing_users_display_names();
16 oct. 2023 00:40:43