Cum să afișezi biografia unui utilizator specific (nu autorul sau utilizatorul logat)
Doresc să afișez (în PHP) avatarul și biografia (descrierea) unui utilizator specific, precum și unele linkuri de social media (bazate pe câmpurile din profilul său). De exemplu, pe Pagina1, să afișez imaginea, descrierea (bio) și linkurile de social media ale utilizatorului Walt Whitman (utilizatorul cu numărul 9999), indiferent de cine a scris pagina sau cine este logat citind pagina.
Pot afișa avatarul:
<?php echo get_avatar( 'useremail@gmail.cam', 32 ); ?>
Am încercat câteva metode, dar nu funcționează. Fie primesc o afișare completă a tuturor metadatelor, fie o eroare fatală (diverse erori fatale precum 'must be string' etc).
<?php the_user_meta( 'description' ); ?>
sau
<?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?>
Dacă folosesc
<?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() este un wrapper pentru această linie $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?>
primesc o eroare fatală.

Puteți utiliza
get_currentuserinfo()
(pentru carewp_get_current_user()
este o funcție wrapper) sauget_current_user_id()
care foloseștewp_get_current_user()
pentru a obține ID-ul utilizatorului autentificat.
Într-un fel sau altul, trebuie să vă asigurați că aveți un utilizator autentificat (ID-ul utilizatorului nu este 0) înainte de a încerca să obțineți metadatele utilizatorului din baza de date.
Odată ce aveți ID-ul utilizatorului, puteți folosi get_user_meta()
pentru a returna informațiile utilizatorului din baza de date
EXEMPLU:
$user = wp_get_current_user();
if ( $user->exists() ) { // is_user_logged_in() este un wrapper pentru această linie
$userdata = get_user_meta( $user->data->ID );
?><pre><?php var_dump( $userdata ); ?></pre><?php
}
EDITARE
Acesta este PHP de bază. Iată ce este returnat de
$userdata = get_user_meta( 1 );
?><pre><?php var_dump( $userdata ); ?></pre><?php
Funcția 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;}}"
}
}
Deci, dacă trebuie să afișați descrierea, puteți face
echo $userdata['description'][0];
Pentru a învăța cum să referențiați valori într-un array, ar trebui să învățați elementele de bază despre cum funcționează array-urile și cum să le referențiați
EDITARE
Următorul este un caz de utilizare exact
$walt_id = 1; // Asigurați-vă că aveți ID-ul corect aici
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
Dacă acest lucru nu funcționează, aveți o problemă gravă undeva pe care ar trebui să o depanați, așa cum am menționat în comentarii

@birgire mulțumesc pentru editare. Mâna a fost mai rapidă decât creierul acolo.

Mulțumesc pentru codul legat de current_user. De fapt, am această informație și eu, din codex. Încerc să afișez informațiile unui utilizator specific însă. De exemplu, pe Pagina1, să afișez imaginea, descrierea (bio) și linkurile de social media ale utilizatorului Walt Whitman, indiferent de cine a scris pagina sau cine este logat citind pagina.

@JustinMunce Atunci pur și simplu folosește ID-ul utilizatorului Walt Whiteman în get_user_meta()
. Nu înțeleg care este problema ta.

Salut Pieter, se pare că nu pot face asta. Tocmai am petrecut încă o oră experimentând cu codul _meta și _description și, din păcate, nu am reușit să fac biografia să apară pe pagină

Dar nu încerc să afișez informațiile utilizatorului autentificat. Încerc să afișez informațiile pentru un anumit utilizator al site-ului "Biografia lui Walt Whitman"

var_dump
va afișa toate informațiile despre Walt, așa că e doar o chestiune de a folosi proprietatea corectă pentru a afișa informația necesară

Văd acea parte. Pot folosi: <?php $userdata = get_user_meta( '9999' ); ?><pre><?php var_dump( $userdata ); ?></pre><?php get_user_meta(); ?> pentru a afișa întreaga informație meta, dar cum pot face să afișeze doar descrierea?

Bună Pieter, mulțumesc pentru asta, am ajuns până acolo, dar nu par să reușesc să afișez doar descrierea. Dacă încerc <?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?> primesc lista completă a tuturor metadatelor. Dacă folosesc <?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() este un wrapper pentru această linie $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?> primesc din nou lista completă a tuturor metadatelor. Nu sunt sigur unde greșesc în cod.

Da, am încercat fără var_dump. Am încercat cam 30 de combinații de cod care ar putea funcționa teoretic. Am obținut fie o listare completă a tuturor metadatelor, fie diverse erori fatale (trebuie să fie string, etc).

Pieter, apreciez foarte mult tot codul, dar tocmai am petrecut încă o oră încercând să fac asta să funcționeze și cercetând funcțiile implicate și tot ce pot face este să afișez bio-ul persoanei care a scris pagina sau al utilizatorului conectat, nu bio-ul persoanei pe care vreau să-l afișez. Dacă este posibil, ai putea te rog să arăți un exemplu de cod care ar funcționa, iar eu aș putea doar să-l adaptez?

Te rog să fii precis acum cu informațiile, mă încurci. Am testat complet codul meu în această dimineață, funcționează, pot să-ți spun asta. Dezactivează toate plugin-urile și treci la o temă implicită. Ai o eroare undeva într-un plugin sau în tema ta

Da, sunt sigur că codul tău funcționează. Doar că nu știu ce să pun pe pagină. Ai oferit mai multe opțiuni, dar speram la ceva pe care să-l pot copia și lipi, să văd că funcționează și să adaptez, dacă e posibil

Într-o oarecare măsură, dar fragmentele de cod sunt separate. Nu știu cum să le combin astfel încât să afișeze biografia.

Vezi ultima mea actualizare. Dacă nu funcționează, ai o eroare sau un filtru undeva în tema ta sau într-un plugin care îți creează probleme

Puteți folosi funcția get_user_by
pentru a obține ID-ul utilizatorului pe baza adresei de email, deoarece se pare că aceasta este informația pe care o aveți la dispoziție. Apoi puteți utiliza get_userdata
sau get_user_meta
pentru a extrage restul câmpurilor meta asociate acelui utilizator, folosind ID-ul obținut.
De exemplu:
$user = get_user_by( 'email', 'useremail@gmail.com' );
$userdata = get_userdata( $user->ID );
$first_name = $userdata->first_name;

Bine, dar cum pot folosi acele comenzi pentru a afișa un anumit câmp meta (bio) pentru un ID de utilizator dat?

get_usermeta
returnează o mulțime de informații despre utilizator, inclusiv description
. Deci, în exemplul de mai sus, am face referire la $userdata->description
pentru a obține câmpul bio.
Pentru a apela funcția userdata de la început, doar săriți peste prima mea linie și transmiteți ID-ul în funcția get_userdata
.

Salut Mike, înțeleg get_usermeta și sunt capabil să-l folosesc pentru a afișa toate informațiile unui utilizator. Ceea ce nu pot face este să apelez utilizatorul și să afișez bio-ul / butoanele de social media. Cu alte cuvinte, nu știu cum să-l codez.

(Sunt autorul întrebării originale.)
Două opțiuni pentru a rezolva această problemă. Acestea pot fi folosite pentru a afișa orice informații despre utilizatorii înregistrați pe site-ul tău. Îți voi arăta cum să afișezi unul SAU două (adică mai multe) lucruri:
1) Metoda Pieter Goosen (Am marcat răspunsul său ca corect mai sus -- mulțumesc din nou, Pieter) (Pentru a folosi, trebuie să accesezi profilul utilizatorului și să obții numărul său de identificare. Folosește acel număr în loc de 9999.
Pentru un singur câmp:
<?php $walt_id = 9999; // Asigură-te că ai ID-ul corect aici
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
?>
Pentru mai multe câmpuri:
<?php $walt_id = 9999; // Asigură-te că ai ID-ul corect aici
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
echo $userdata['first_name'][0];
?>
2) Metoda stephencottontail:
Pentru un singur câmp:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
Pentru mai multe câmpuri:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
<?php the_author_meta( 'first_name', 9999 ); ?>
