Come visualizzare la biografia di un utente (non l'autore o l'utente loggato)

8 nov 2015, 07:32:18
Visualizzazioni: 18.8K
Voti: 4

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.

3
Commenti

Hai l'ID dell'utente per cui vuoi visualizzare questi dettagli?

Tom J Nowell Tom J Nowell
8 nov 2015 07:34:14

Sì, ho l'ID dell'utente e l'email

Justin Munce Justin Munce
8 nov 2015 08:44:55

Sembra che manchi del codice HTML nel tuo snippet

birgire birgire
8 nov 2015 13:15:00
Tutte le risposte alla domanda 3
18

Puoi utilizzare

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

8 nov 2015 13:06:32
Commenti

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

Pieter Goosen Pieter Goosen
8 nov 2015 13:29:24

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.

Justin Munce Justin Munce
9 nov 2015 00:59:59

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

Pieter Goosen Pieter Goosen
9 nov 2015 05:53:55

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

Justin Munce Justin Munce
9 nov 2015 09:49:14

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"

Justin Munce Justin Munce
9 nov 2015 10:02:06

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

Pieter Goosen Pieter Goosen
10 nov 2015 12:43:19

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?

Justin Munce Justin Munce
10 nov 2015 21:48:46

Guarda il mio aggiornamento, spero possa aiutare

Pieter Goosen Pieter Goosen
11 nov 2015 20:16:00

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.

Justin Munce Justin Munce
11 nov 2015 23:11:54

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.).

Justin Munce Justin Munce
12 nov 2015 02:56:20

OK, ho aggiornato la domanda

Justin Munce Justin Munce
12 nov 2015 06:13:17

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?

Justin Munce Justin Munce
12 nov 2015 10:49:18

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

Pieter Goosen Pieter Goosen
12 nov 2015 11:14:09

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

Justin Munce Justin Munce
12 nov 2015 11:20:31

Non è esattamente quello che ho fatto?

Pieter Goosen Pieter Goosen
12 nov 2015 12:07:26

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

Justin Munce Justin Munce
12 nov 2015 12:30:05

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

Pieter Goosen Pieter Goosen
12 nov 2015 14:05:14

Grazie. Questo ha aiutato! Ora posso visualizzare elementi dai meta con piccoli adattamenti del tuo codice.

Justin Munce Justin Munce
13 nov 2015 07:48:07
Mostra i restanti 13 commenti
4

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;
9 nov 2015 03:37:31
Commenti

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

Justin Munce Justin Munce
9 nov 2015 09:49:57

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.

Mike Selander Mike Selander
10 nov 2015 06:21:56

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.

Justin Munce Justin Munce
10 nov 2015 06:50:43

se quando non hai il valore del campo ma hai l'URL, ad esempio se lo slug è https://myexample.com/user/joe/ come ottenere il valore dello slug

Firefog Firefog
1 lug 2018 13:50:51
0

(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 ); ?>
13 nov 2015 07:54:46