Imposta "Mostra nome pubblicamente come" per usare gli username di default

10 gen 2016, 22:05:02
Visualizzazioni: 15.7K
Voti: 3

Il mio sito WordPress attualmente mostra le informazioni identificative degli utenti come NOME + COGNOME.

La maggior parte preferisce essere riconosciuta tramite i propri username. Ho spiegato come cambiare manualmente l'opzione "Mostra nome pubblicamente come" (tramite le impostazioni utente), ma non è la soluzione ideale.

Vorrei che i nuovi utenti vengano visualizzati con il loro username come impostazione predefinita. Nota che voglio che questo cambiamento si rifletta anche nei plugin che fanno riferimento alla proprietà "Mostra nome pubblicamente come".

Come posso fare?

4
Commenti

Potresti modificare il tuo tema per visualizzare sempre il nome utente invece di qualsiasi altra cosa.

flomei flomei
10 gen 2016 23:13:05

In questo caso non si tratta solo del tema, ma anche di alcuni plugin che sto utilizzando

CodyBugstein CodyBugstein
10 gen 2016 23:13:50

Sarebbe un'informazione utile da includere nel tuo primo post, per favore aggiungi queste informazioni.

flomei flomei
10 gen 2016 23:15:51

@flomei ok, l'ho aggiunto

CodyBugstein CodyBugstein
10 gen 2016 23:16:49
Tutte le risposte alla domanda 3
12

Se desideri che questo avvenga per tutti gli utenti futuri, agganciati all'evento user_register e aggiornalo lì.

Recupera l'WP_User utilizzando get_userdata e wp_update_user con il nuovo nome visualizzato.

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

function wpse_20160110_user_register ( $user_id ) {

    // ottieni i dati dell'utente

    $user_info = get_userdata( $user_id );

    // scegli il nostro nome visualizzato predefinito

    $display_publicly_as = $user_info->user_login;

    // aggiorna il nome visualizzato

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

Se vuoi impostare questo ad ogni accesso, agganciati a wp_login utilizzando 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 gen 2016 23:22:30
Commenti

Grazie! Dove dovrei inserire questo codice?

CodyBugstein CodyBugstein
11 gen 2016 21:49:26

Sia in un plugin che in functions.php, ma se lo inserisci nel tuo tema c'è la possibilità che venga sovrascritto.

jgraup jgraup
11 gen 2016 22:28:51

Ho provato la parte di login ma non funziona per cambiare il nome visualizzato

CodyBugstein CodyBugstein
17 gen 2016 08:18:12

Ho provato l'azione on registration e funziona!

CodyBugstein CodyBugstein
17 gen 2016 08:23:26

Puoi prima verificare se l'hook funziona? Poi assicurati che i dati arrivino correttamente. E infine che la priorità sia sufficientemente tarda? Ricordo che quando l'ho testato funzionava per me.

jgraup jgraup
17 gen 2016 16:12:15

Come posso verificare se la priorità è sufficientemente tarda? (scusami, sono nuovo a WordPress)

CodyBugstein CodyBugstein
17 gen 2016 23:55:40

0/1 è presto. 10 è il valore predefinito. 99 è tardi, significa che viene eseguito dopo la maggior parte degli hook. Useresti 99 se un altro hook imposta quell'informazione e vuoi assicurarti di essere l'ultimo a impostare i metadati. Ma ancora una volta, verifica che venga chiamato, controlla che i dati vengano impostati prima di preoccuparti della priorità.

jgraup jgraup
18 gen 2016 03:11:31

Interessante, ma come faccio a essere sicuro di essere l'ultimo? Non posso controllare manualmente centinaia di file

CodyBugstein CodyBugstein
19 gen 2016 16:27:03

https://wordpress.org/plugins/query-monitor/ ti mostrerà gli hook e la priorità.

jgraup jgraup
19 gen 2016 17:02:47

Ho testato di nuovo questa cosa. Ho aggiornato l'esempio per usare PHP_INT_MAX che dovrebbe essere l'ultimo momento possibile per usare l'hook. Se non funziona c'è qualcos'altro che non va.

jgraup jgraup
19 gen 2016 17:26:07

Puoi collegarlo all'hook 'profile_update', così verrà eseguito ad ogni aggiornamento degli utenti.

Marco Marsala Marco Marsala
26 gen 2018 09:33:46

@MarcoMarsala Ho provato a collegarmi a 'profile_update' e ho ottenuto un loop infinito. =.= Immagino perché questa funzione aggiorna anche il profilo.

Betty Betty
3 mar 2019 16:28:36
Mostra i restanti 7 commenti
0

Per impostare programmaticamente il nome visualizzato sia durante la registrazione che durante l'aggiornamento del profilo, evitando il loop infinito che Betty ha sperimentato, è necessario verificare se il nome visualizzato è già impostato come desiderato.

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 mag 2019 14:22:31
0

Per aggiornare durante la registrazione e l'aggiornamento del profilo:

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

    // Costruisce il nome completo utilizzando nome e cognome.
    $full_name = trim( $user_info->first_name . ' ' . $user_info->last_name );

    // Se il nome completo non è vuoto ed è diverso dal display name corrente, lo aggiorna.
    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' );

Per aggiornare gli utenti esistenti (eseguire una sola volta):

function update_existing_users_display_names() {
    // Recupera tutti gli utenti
    $users = get_users();

    foreach ( $users as $user ) {
        // Costruisce il nome completo utilizzando nome e cognome.
        $full_name = trim( $user->first_name . ' ' . $user->last_name );

        // Se il nome completo non è vuoto ed è diverso dal display name corrente, lo aggiorna.
        if ( ! empty( $full_name ) && $full_name !== $user->display_name ) {
            wp_update_user( array( 'ID' => $user->ID, 'display_name' => $full_name ) );
        }
    }
}

// Chiama la funzione per eseguire l'aggiornamento.
update_existing_users_display_names();
16 ott 2023 00:40:43