Cum să afișezi biografia unui utilizator specific (nu autorul sau utilizatorul logat)

8 nov. 2015, 07:32:18
Vizualizări: 18.8K
Voturi: 4

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

3
Comentarii

Aveți ID-ul utilizatorului pentru care doriți să afișați aceste detalii?

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

Da, am ID-ul utilizatorului și adresa de email

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

Se pare că lipsește o parte din codul HTML în fragmentul tău

birgire birgire
8 nov. 2015 13:15:00
Toate răspunsurile la întrebare 3
18

Puteți utiliza

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

8 nov. 2015 13:06:32
Comentarii

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

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

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.

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

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

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

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ă

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

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"

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

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ă

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

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?

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

Vezi actualizarea mea, sper că te va ajuta

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

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.

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

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

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

OK, am actualizat întrebarea

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

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?

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

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

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

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

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

Nu exact asta am făcut?

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

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

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

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

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

Mulțumesc. Asta a ajutat! Acum pot afișa elemente din meta cu mici adaptări ale codului tău.

Justin Munce Justin Munce
13 nov. 2015 07:48:07
Arată celelalte 13 comentarii
4

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

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

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

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.

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

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.

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

dacă nu ai valoarea câmpului dar ai URL-ul, de exemplu dacă slug-ul este https://myexample.com/user/joe/ cum poți obține valoarea slug-ului

Firefog Firefog
1 iul. 2018 13:50:51
0

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