Come visualizzare la biografia di un utente (non l'autore o l'utente loggato)
Vorrei (in php) visualizzare l'avatar, la biografia (descrizione) e alcuni link ai social media di un determinato utente (basandomi sui campi del suo profilo). Ad esempio, nella Pagina1, mostrare l'immagine, la descrizione (bio) e i link ai social di Walt Whitman (utente numero 9999), indipendentemente da chi ha scritto la pagina o chi è loggato mentre la visualizza.
Riesco a visualizzare l'avatar:
<?php echo get_avatar( 'useremail@gmail.cam', 32 ); ?>
Ho provato diverse soluzioni, ma non funzionano. Ottengo o una visualizzazione completa di tutti i meta o un errore fatale (vari errori come 'must be string' ecc.).
<?php the_user_meta( 'description' ); ?>
oppure
<?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?>
Se uso
<?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() è un wrapper per questa riga $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?>
ottengo un errore fatale.

Puoi utilizzare
wp_get_current_user()
oppureget_currentuserinfo()
(per cuiwp_get_current_user()
è una funzione wrapper) oppureget_current_user_id()
che utilizzawp_get_current_user()
per ottenere l'ID dell'utente attualmente loggato.
In un modo o nell'altro, devi assicurarti che ci sia un utente loggato (l'ID utente non è 0) prima di tentare di ottenere i metadati dell'utente dal database.
Una volta ottenuto l'ID utente, puoi usare get_user_meta()
per recuperare le informazioni dell'utente dal database
ESEMPIO:
$user = wp_get_current_user();
if ( $user->exists() ) { // is_user_logged_in() è un wrapper per questa riga
$userdata = get_user_meta( $user->data->ID );
?><pre><?php var_dump( $userdata ); ?></pre><?php
}
MODIFICA
Questo è PHP molto basilare. Ecco cosa viene restituito da
$userdata = get_user_meta( 1 );
?><pre><?php var_dump( $userdata ); ?></pre><?php
Il var_dump()
array(29) {
["first_name"]=>
array(1) {
[0]=>
string(6) "Pieter"
}
["last_name"]=>
array(1) {
[0]=>
string(6) "Goosen"
}
["nickname"]=>
array(1) {
[0]=>
string(12) "pietergoosen"
}
["description"]=>
array(1) {
[0]=>
string(349) "My naam is Pieter Goosen BLAH BLAH BLAH"
}
["rich_editing"]=>
array(1) {
[0]=>
string(4) "true"
}
["comment_shortcuts"]=>
array(1) {
[0]=>
string(5) "false"
}
["admin_color"]=>
array(1) {
[0]=>
string(5) "fresh"
}
["use_ssl"]=>
array(1) {
[0]=>
string(1) "0"
}
["show_admin_bar_front"]=>
array(1) {
[0]=>
string(5) "false"
}
["wp_capabilities"]=>
array(1) {
[0]=>
string(31) "a:1:{s:13:"administrator";b:1;}"
}
["wp_user_level"]=>
array(1) {
[0]=>
string(2) "10"
}
["dismissed_wp_pointers"]=>
array(1) {
[0]=>
string(143) "wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media,wp360_revisions,wp390_widgets"
}
["show_welcome_panel"]=>
array(1) {
[0]=>
string(1) "0"
}
["wp_user-settings"]=>
array(1) {
[0]=>
string(120) "libraryContent=browse&imgsize=full&align=right&editor=html&hidetb=1&mfold=o&unfold=1&urlbutton=post&posts_list_mode=list"
}
["wp_user-settings-time"]=>
array(1) {
[0]=>
string(10) "1447257892"
}
["wp_dashboard_quick_press_last_post_id"]=>
array(1) {
[0]=>
string(3) "463"
}
["twitter"]=>
array(1) {
[0]=>
string(0) ""
}
["facebook"]=>
array(1) {
[0]=>
string(15) "pietergoosencom"
}
["managenav-menuscolumnshidden"]=>
array(1) {
[0]=>
string(89) "a:4:{i:0;s:11:"link-target";i:1;s:11:"css-classes";i:2;s:3:"xfn";i:3;s:11:"description";}"
}
["metaboxhidden_nav-menus"]=>
array(1) {
[0]=>
string(102) "a:4:{i:0;s:8:"add-post";i:1;s:14:"add-informasie";i:2;s:12:"add-post_tag";i:3;s:15:"add-post_format";}"
}
["nav_menu_recently_edited"]=>
array(1) {
[0]=>
string(3) "130"
}
["closedpostboxes_page"]=>
array(1) {
[0]=>
string(6) "a:0:{}"
}
["metaboxhidden_page"]=>
array(1) {
[0]=>
string(94) "a:4:{i:0;s:10:"postcustom";i:1;s:16:"commentstatusdiv";i:2;s:7:"slugdiv";i:3;s:9:"authordiv";}"
}
["closedpostboxes_post"]=>
array(1) {
[0]=>
string(6) "a:0:{}"
}
["metaboxhidden_post"]=>
array(1) {
[0]=>
string(6) "a:0:{}"
}
["closedpostboxes_positions"]=>
array(1) {
[0]=>
string(6) "a:0:{}"
}
["metaboxhidden_positions"]=>
array(1) {
[0]=>
string(6) "a:0:{}"
}
["rtladminbar"]=>
array(1) {
[0]=>
string(3) "ltr"
}
["session_tokens"]=>
array(1) {
[0]=>
string(285) "a:1:{s:64:"fa12574e7a42af2a8944d764c21bda64a5a5ee4572b1fbceb027d8b4af5afcd3";a:4:{s:10:"expiration";i:1448467488;s:2:"ip";s:3:"::1";s:2:"ua";s:108:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36";s:5:"login";i:1447257888;}}"
}
}
Quindi, se hai bisogno di visualizzare la descrizione, puoi fare
echo $userdata['description'][0];
Per imparare come fare riferimento ai valori in un array, dovresti davvero imparare le basi fondamentali di come funzionano gli array e come fare riferimento ad essi
MODIFICA
Il seguente è un caso d'uso esatto
$walt_id = 1; // Assicurati di avere l'ID corretto qui
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
Se questo non funziona, hai un problema serio da qualche parte che dovresti debug come ho indicato nei commenti

@birgire grazie per la modifica. La mano è stata più veloce del cervello in quel momento.

Grazie per il codice su current_user. In realtà, ho anche io quelle informazioni, dal codex. Sto cercando di visualizzare le informazioni di un utente specifico però. Ad esempio, sulla Pagina1, visualizzare l'immagine, la descrizione (bio) e i link ai social media dell'utente Walt Whitman, indipendentemente da chi ha scritto la pagina o da chi è loggato mentre legge la pagina.

@JustinMunce Allora semplicemente passa l'ID dell'utente Walt Whiteman a get_user_meta()
. Non capisco quale sia il tuo problema.

Ciao Pieter, apparentemente non riesco a farlo. Ho appena passato un'altra ora a sperimentare con il codice _meta e _description ma purtroppo non sono riuscito a far visualizzare la biografia sulla pagina

Ma non sto provando a visualizzare le informazioni dell'utente loggato. Sto cercando di visualizzare le informazioni di un utente specifico del sito "La biografia di Walt Whitman"

Il var_dump
mostrerà tutte le informazioni di Walt, quindi è solo questione di usare la proprietà corretta per visualizzare le informazioni necessarie

Vedo quella parte. Posso usare: <?php $userdata = get_user_meta( '9999' ); ?><pre><?php var_dump( $userdata ); ?></pre><?php get_user_meta(); ?> per visualizzare tutte le informazioni meta, ma come faccio a visualizzare solo la descrizione?

Ciao Pieter, grazie per questo, ero arrivato a quel punto, ma non sembro in grado di visualizzare solo la descrizione. Se provo <?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?> ottengo la stampa completa di tutti i meta. Se uso <?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() è un wrapper per questa riga $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?> ottengo nuovamente la stampa completa di tutti i meta. Non sono sicuro di dove sbaglio nel codice.

Sì, ho provato senza il var_dump. Ho provato circa 30 combinazioni di codice che potrebbero funzionare. Ottengo o una stampa completa di tutti i meta o vari errori fatali (deve essere una stringa, ecc.).

Pieter, apprezzo molto tutto il codice, ma ho passato un'altra ora a cercare di farlo funzionare e a ricercare le funzioni coinvolte e tutto ciò che riesco a fare è visualizzare la biografia della persona che ha scritto la pagina o dell'utente loggato, non la biografia della persona che voglio mostrare. Se possibile, potresti mostrare un esempio di codice che funzionerebbe, così potrei semplicemente adattarlo?

Per favore, chiarisci bene i fatti ora, mi stai confondendo. Ho testato completamente il mio codice stamattina, funziona, te lo posso assicurare. Disabilita tutti i plugin e passa a un tema predefinito. Hai un bug da qualche parte in un plugin o nel tuo tema

Sì, sono sicuro che il tuo codice funzioni. Solo che non so cosa mettere nella pagina. Hai fornito diverse opzioni, ma speravo in qualcosa che potessi copiare e incollare, vedere funzionare e adattare, se possibile

In parte, ma i pezzi di codice sono tutti separati. Non so come unirli per visualizzare la biografia.

Vedi il mio aggiornamento finale. Se non funziona, hai un bug o un filtro da qualche parte nel tuo tema o in un plugin che ti sta causando problemi

Puoi utilizzare get_user_by
per ottenere il loro ID Utente dall'indirizzo email, dato che sembra essere il dato che hai disponibile. Puoi poi usare get_userdata
o get_user_meta
da quell'ID utente per recuperare tutti gli altri campi meta.
Ad esempio:
$user = get_user_by( 'email', 'useremail@gmail.com' );
$userdata = get_userdata( $user->ID );
$first_name = $userdata-> first_name;

Ok, ma come posso usare quei comandi per visualizzare il campo meta (bio) specifico per un determinato ID utente?

get_usermeta
restituisce una grande quantità di informazioni sull'utente, incluso description
. Quindi, nell'esempio precedente, faremmo riferimento a $userdata->description
per ottenere il campo bio.
Per chiamare inizialmente la funzione userdata, salta semplicemente la mia prima riga e passa l'ID alla funzione get_userdata
.

Ciao Mike, capisco get_usermeta e riesco a usarlo per visualizzare tutte le informazioni di un utente. Quello che non riesco a fare è recuperare l'utente e visualizzare la bio / i pulsanti dei social media. In altre parole, non so come codificarlo.

(Sono l'autore originale.)
Due opzioni per risolvere questo problema. Queste possono essere utilizzate per visualizzare qualsiasi informazione per gli utenti registrati sul tuo sito web. Ti mostrerò come visualizzare una OPPURE due (o più) cose:
1) Metodo Pieter Goosen (ho contrassegnato la sua risposta come corretta sopra - grazie ancora, Pieter) (Ragazzi, dovete entrare nel profilo utente e ottenere il loro numero utente. Usate quel numero invece di 9999.
Una cosa:
<?php $walt_id = 9999; // Assicurati di avere l'ID corretto qui
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
?>
Più di una cosa:
<?php $walt_id = 9999; // Assicurati di avere l'ID corretto qui
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
echo $userdata['first_name'][0];
?>
2) Metodo stephencottontail:
Una cosa:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
Più di una cosa:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
<?php the_author_meta( 'first_name', 9999 ); ?>
