Uno shortcode per i dati utente

Spesso è necessario mandare a video uno o alcuni dei dati associati al profilo dell’utente collegato (nickname, indirizzo email, nome, cognome o ID).

Per eseguire il task è necessario istallare un plugin, oppure aggiungere un po’ di codice al file functions.php del tema corrente.

In casi del genere, una soluzione efficiente potrebbe essere quella di creare uno shortcode, in modo che l’amministratore del sito possa aggiungere questi dati ovunque ne abbia bisogno.

Si supponga di voler creare lo shortcode [userdata].

Allo shortocode potrà essere assegnato uno (ed uno solo) dei seguenti attributi:

  • user_login
  • user_email
  • user_firstname
  • user_lastname
  • display_name
  • ID

Ecco il codice:


// create [userdata] shortcode
function get_current_userdata_cb( $atts ){
    if ( is_user_logged_in() ) { 
        // get the current user
        $cu = wp_get_current_user();

        switch ( $atts[0] ) {
            case 'user_login':
                return $cu->user_login;
                break;
            case 'user_email':
                return $cu->user_email;
                break;
            case 'user_firstname':
                return $cu->user_firstname;
                break;
            case 'user_lastname':
                return $cu->user_lastname;
                break;
            case 'display_name':
                return $cu->display_name;
                break;
            case 'ID':
                return $cu->ID;
                break;
            default:
                return $cu->user_login;
                break;
        }

    }else{
        return '';
    }
}
add_shortcode( 'userdata', 'get_current_userdata_cb' );

Se l’utente è collegato (is_user_logged_in), viene creata un’istanza della classe WP_User (wp_get_current_user).

Il primo attributo passato allo shortcode (atts[0]) viene confrontato con i possibili valori delle proprietà dell’oggetto WP_User ($cu->{$prop}).
Individuata la corrispondenza, viene restituito il valore della proprietà e interrotta l’esecuzione della funzione.

Ora si provi a inserire in un post lo shortcode [userdata display_name]