web-dev-qa-db-fra.com

Comment afficher la biographie d'un utilisateur (et non l'auteur ou l'utilisateur connecté)

J'aimerais (en php) afficher l'avatar et la bio (description) d'un utilisateur donné ainsi que certains médias sociaux correspondant (en fonction des champs d'informations de son profil). Par exemple, à la page 1, affichez les liens de l’image, de la description (bio) et des réseaux sociaux de l’utilisateur Walt Whitman (numéro d’utilisateur 9999), indépendamment de celui qui a écrit la page ou de celui qui est connecté pour la lire.

Je peux afficher l'avatar:

<?php echo get_avatar( '[email protected]', 32 ); ?>

J'ai essayé plusieurs choses, mais elles ne fonctionnent pas. Je reçois soit un affichage complet de toutes les méta, soit une erreur fatale (diverses erreurs fatales telles que 'must be string', etc.).

<?php the_user_meta( 'description' ); ?>

ou

<?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?> 

Si j'utilise

<?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() is a wrapper for this line $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?>

J'ai une erreur fatale.

1
Justin Munce

Vous pouvez utiliser

pour obtenir l'ID utilisateur actuellement connecté.

D'une manière ou d'une autre, vous devez vous assurer que vous avez un utilisateur connecté ( l'ID utilisateur n'est pas 0 ) avant d'essayer d'obtenir les métadonnées de l'utilisateur. de la db.

Une fois que vous avez l'ID utilisateur, vous pouvez utiliser get_user_meta() pour renvoyer les informations de l'utilisateur à partir de la base de données.

EXEMPLE:

$user = wp_get_current_user();
if ( $user->exists() ) { // is_user_logged_in() is a wrapper for this line
    $userdata = get_user_meta( $user->data->ID );
    ?><pre><?php var_dump( $userdata ); ?></pre><?php
}

MODIFIER

C'est très basique PHP. Voici ce qui est retourné par

$userdata = get_user_meta( 1 );
    ?><pre><?php var_dump( $userdata ); ?></pre><?php

La 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;}}"
  }
}

Donc, si vous avez besoin d’afficher la description, vous pouvez faire

echo $userdata['description'][0];

Pour apprendre à référencer des valeurs dans un tableau, vous devez réellement apprendre à comprendre le fonctionnement des tableaux et à les référencer.

MODIFIER

Ce qui suit est un cas d'utilisation exact

$walt_id = 1; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];

Si cela ne fonctionne pas, vous avez un problème grave quelque part que vous devez résoudre comme je l’ai dit dans des commentaires.

3
Pieter Goosen

Vous pouvez utiliser _get_user_by_ pour obtenir leur ID utilisateur à partir de l'adresse e-mail, car il semble que ce soit les données que vous avez disponibles ci-dessus. Vous pouvez ensuite utiliser le get_userdata ou get_user_meta à partir de cet ID utilisateur pour extraire tous leurs autres champs méta.

Par exemple:

_$user = get_user_by( 'email', '[email protected]' );
$userdata = get_userdata( $user->ID );

$first_name = $userdata-> first_name;
_
1
Mike Selander

(Je suis l'op.)

Deux options pour résoudre ce problème. Ceux-ci peuvent être utilisés pour afficher des informations pour les utilisateurs enregistrés sur votre site Web. Je vais vous montrer comment afficher un OR deux (c.-à-d. Plusieurs) choses:

1) Pieter Goosen way (J'ai vérifié sa réponse comme correcte ci-dessus - merci encore Pieter) (Personnes, vous devez entrer dans le profil de l'utilisateur et obtenir son numéro d'utilisateur. Utilisez ce numéro au lieu de 9999 .

Une chose:

<?php $walt_id = 9999; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0]; 
?>

Plus qu'une chose:

<?php $walt_id = 9999; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0]; 
echo $userdata['first_name'][0]; 
?>

2) stephencottontail way:

Une chose:

<?php the_author_meta( 'user_description', 9999 ); ?> </br>

Plus qu'une chose:

<?php the_author_meta( 'user_description', 9999 ); ?> </br>
<?php the_author_meta( 'first_name', 9999 ); ?>
0
Justin Munce