Oggi vediamo la funzion wp_get_current_user() , questa funzione ci permette di mostrare a video, per esempio in una pagina dedicata, tutti i campi user meta degli utenti registrati di WordPress e volento anche i campi di WooCommerce.
Cosa sono i user meta ?
Sono i campi che si vedono nella gestione utenti di WordPress, alcuni sono di default quando viene installato WordPress, altri invece possono essere aggiunti da altri plugin come WooCommerce, oppure ancora li possiamo aggiungere noi a piacimento, leggi come aggiungere user meta su WordPress con ACF.
Come far apparire user meta in una pagina WordPress
Passiamo subito al codice e poi lo spiego.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<?php //Fix Call to undefined function wp_get_current_user() if(!function_exists('wp_get_current_user')) { include(ABSPATH . "wp-includes/pluggable.php"); } ob_start(); function user_profile(){ //get default user meta $current_user = wp_get_current_user(); echo "<h3>Dati di accesso</h3>"; echo 'Username: ' . $current_user->user_login . '<br />'; echo 'Email: ' . $current_user->user_email . '<br />'; echo 'Nome: ' . $current_user->user_firstname . '<br />'; echo 'Cognome: ' . $current_user->user_lastname . '<br />'; echo 'Nome pubblico: ' . $current_user->display_name . '<br />'; echo 'User ID: ' . $current_user->ID . '<br />'; // get woocommerce user meta echo "<h3>Dati fatturazione</h3>"; echo 'Azienda: ' . $current_user->billing_company .'</br>'; echo 'Indirizzo 1: ' . $current_user->billing_address_1 .'</br>'; echo 'Indirizzo 2: ' . $current_user->billing_address_2 .'</br>'; echo 'Città: ' . $current_user->billing_city .'</br>'; echo 'CAP: ' . $current_user->billing_postcode .'</br>'; echo 'Nazione: ' . $current_user->billing_country .'</br>'; echo 'Provincia: ' . $current_user->billing_state .'</br>'; echo 'Telefono: ' . $current_user->billing_phone .'</br>'; echo 'Email: ' . $current_user->billing_email .'</br>'; echo "<h3>Dati spedizione</h3>"; echo 'Nome: ' . $current_user->shipping_first_name .'</br>'; echo 'Cognome: ' . $current_user->shipping_last_name .'</br>'; echo 'Azienda: ' . $current_user->shipping_company .'</br>'; echo 'Indirizzo 1: ' . $current_user->shipping_address_1 .'</br>'; echo 'Indirizzo 2: ' . $current_user->shipping_address_2 .'</br>'; echo 'Città: ' . $current_user->shipping_city .'</br>'; echo 'CAP: ' . $current_user->shipping_postcode .'</br>'; echo 'Nazione: ' . $current_user->shipping_country .'</br>'; echo 'Provincia: ' . $current_user->shipping_state .'</br>'; //get ACF user meta echo $presta_consenso_newsletter = get_field('presta_consenso_newsletter', 'user_'.$current_user->ID ); } add_shortcode('show_user_profile','user_profile'); |
if(!function_exists(‘wp_get_current_user’)) { include(ABSPATH . “wp-includes/pluggable.php”); } : questa stringa di codice ci permette di correggere un piccolo bug di WordPress, infatti se non ci fosse questa riga avremmo l’errore “Call to undefined function wp_get_current_user()“, questo perchè WP non riesce a trovare la funzione, invece in questo moto la includiamo, infatti tale funzione si trova nel file pluggable.php
ob_start(); : questa invece è una funzione nativa di PHP che in questo caso la utilizziamo perchè dopo tale funzione abbiao in output dell’html, quindi ovviamo all’errore comunque “header already sent by …“
Quindi utilizzando la funzione di WP wp_get_current_user() inserendola in una variabile, $current_user = wp_get_current_user(); , posso poi andare a interrogare i vari campi user meta e printarli a video, $current_user->user_login
Come far apparire i user meta in una pagina dedicata ?
Come si può notare, alla fine del codice ho screato uno shortcode, add_shortcode(‘show_user_profile’,’user_profile’); , quindi se vogliamo mostrare il risultato dell’output semplicemente creiamo una pagina dedicata i ci inseriamo il codice [show_user_profile]
Come si trovano i user meta di WordPress
Qui c’è la guida ufficiale dei userdata https://codex.wordpress.org/Function_Reference/get_userdata
Come si trovano i user meta di WooCommerce
Qui la guida https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
Salve Alessio,
complimenti per i tuoi articoli!
Una domanda: se io amplio i campi della tabella UserMeta con estensioni come WP Members, e credo un campo come ad esempio Codice Ateco, posso richiamare allo stesso modo il contenuto usando $current_user?
Grazie
Ciao Francesco,
guarda non utilizzo quel plugin perchè di solito scrivo io il codice, ma a regola dovrebbe essere user meta, quindi presuma che basti conoscere l’id del meta che aggiungi e poi dovresti accederci usando $current_user, al massimo fai un print di tutti i meta e vedi come si chiama quello che hai aggiunto, puoi usare :
$user_info = get_user_meta($current_user->ID);
var_dump($user_info);
Io vorrei far mostrare a una pagina riservata e privata al cliente tutti i dati : (user, nominativo, email, cell, password)
Ma in particolare mi servirebbe una stringa che permetta al cliente di cambiare la password senza passare dalla pagina di profilo wp.
Cosa dovrei fare?
Al momento uso Private Content per far si che ogni cliente possa avere una pagina privata.
Ciao Emanuel, per quello che vuoi fare non ti serve Private Content, va fatto un plugin custom.
Se vuoi contattami nella sezione contatti e ti faccio un preventivo.