Cómo mostrar la biografía de un usuario (que no sea el autor o el usuario conectado)
Me gustaría mostrar (en PHP) el avatar, biografía (descripción) y algunos enlaces a redes sociales de un usuario específico (basado en los campos de su perfil). Por ejemplo, en la Página1, mostrar la imagen, descripción (biografía) y enlaces a redes sociales del usuario Walt Whitman (usuario número 9999), independientemente de quién escribió la página o quién esté conectado leyendo la página.
Puedo mostrar el avatar:
<?php echo get_avatar( 'useremail@gmail.cam', 32 ); ?>
He intentado varias cosas, pero no funcionan. Obtengo o bien una visualización completa de todos los metadatos o un error fatal (diversos errores como 'debe ser string' etc.).
<?php the_user_meta( 'description' ); ?>
o
<?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?>
Si uso:
<?php
$user = wp_get_current_user( 9999 );
if ( $user->exists() ) // is_user_logged_in() es un wrapper para esta línea
$userdata = get_user_meta( $user->data->ID );
?>
<pre><?php var_dump( $userdata ); ?></pre>
<?php echo $userdata['description']; ?>
Recibo un error fatal.

Puedes hacer uso de:
get_currentuserinfo()
(para lo cualwp_get_current_user()
es una función wrapper) oget_current_user_id()
que utilizawp_get_current_user()
para obtener el ID del usuario actualmente conectado.
De una forma u otra, necesitas asegurarte de que tienes un usuario conectado (el ID de usuario no es 0) antes de intentar obtener los metadatos del usuario desde la base de datos.
Una vez que tengas el ID de usuario, puedes usar get_user_meta()
para obtener la información del usuario desde la base de datos.
EJEMPLO:
$user = wp_get_current_user();
if ( $user->exists() ) { // is_user_logged_in() es un wrapper para esta línea
$userdata = get_user_meta( $user->data->ID );
?><pre><?php var_dump( $userdata ); ?></pre><?php
}
EDITAR
Esto es PHP muy básico. Aquí está lo que devuelve:
$userdata = get_user_meta( 1 );
?><pre><?php var_dump( $userdata ); ?></pre><?php
El 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;}}"
}
}
Entonces, si necesitas mostrar la descripción, puedes hacer:
echo $userdata['description'][0];
Para aprender cómo referenciar valores en un array, realmente necesitas aprender lo más básico sobre cómo funcionan los arrays y cómo referenciarlos.
EDITAR
Lo siguiente es un caso de uso exacto:
$walt_id = 1; // Asegúrate de tener el ID correcto aquí
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
Si esto no funciona, tienes un problema serio en algún lugar que deberías depurar como he mencionado en los comentarios.

@birgire gracias por la edición. La mano fue más rápida que el cerebro en ese momento.

Gracias por el código sobre current_user. De hecho, yo también tengo esa información, del codex. Sin embargo, estoy intentando mostrar la información de un usuario específico. Por ejemplo, en la Página1, mostrar la imagen, descripción (biografía) y enlaces a redes sociales del usuario Walt Whitman, independientemente de quién escribió la página o quién haya iniciado sesión para leerla.

@JustinMunce Entonces simplemente pasa el ID de usuario de Walt Whitman a get_user_meta()
. No entiendo cuál es tu problema.

Hola Pieter, aparentemente no puedo hacer eso. Acabo de pasar otra hora experimentando con códigos _meta y _description y no he podido hacer que la biografía se muestre en la página, desafortunadamente

Pero no estoy intentando mostrar la información del usuario conectado. Estoy tratando de mostrar la información para un usuario específico del sitio "La biografía de Walt Whitman"

El var_dump
mostrará toda la información de Walt, así que es solo cuestión de usar la propiedad correcta para mostrar la información necesaria

Veo esa parte. Puedo usar: <?php $userdata = get_user_meta( '9999' ); ?><pre><?php var_dump( $userdata ); ?></pre><?php get_user_meta(); ?> para mostrar toda la información meta, pero ¿cómo hago para que solo muestre la descripción?

Hola Pieter, gracias por eso, ya había llegado hasta ahí, pero no parece que pueda mostrar solo la descripción. Si intento <?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?> obtengo la impresión completa de todos los meta. Si uso <?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() es un wrapper para esta línea $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?> obtengo de nuevo la impresión completa de todos los meta. No estoy seguro dónde está el error en mi código.

Sí, lo he intentado sin el var_dump. He probado alrededor de 30 combinaciones de código que podrían funcionar. Obtengo o una impresión completa de todos los meta o varios errores fatales (debe ser string, etc).

Pieter, agradezco mucho todo el código, pero acabo de pasar otra hora intentando que esto funcione e investigando las funciones involucradas y todo lo que puedo hacer es mostrar la biografía de la persona que escribió la página o del usuario conectado, no la biografía de la persona que quiero mostrar. Si es posible, ¿podrías por favor mostrar un ejemplo de código que funcione y yo podría adaptarlo?

Por favor, aclara los hechos ahora, me estás confundiendo. Probé completamente mi código esta mañana, funciona, te lo aseguro. Desactiva todos los plugins y cambia a un tema predeterminado. Tienes un error en algún plugin o en tu tema

Sí, estoy seguro de que tu código funciona. Simplemente no sé qué poner en la página. Has proporcionado varias opciones, pero esperaba algo que pueda copiar y pegar, ver que funcione y adaptar, si es posible

Hasta cierto punto, pero los fragmentos de código están todos separados. No sé cómo unirlos para que muestren la biografía.

Consulta mi actualización final. Si eso no funciona, tienes un error o un filtro en algún lugar de tu tema o en un plugin que te está causando problemas

Puedes usar get_user_by
para obtener su ID de usuario a partir de la dirección de correo electrónico, ya que parece que ese es el dato que tienes disponible. Luego puedes usar get_userdata
o get_user_meta
con ese ID de usuario para obtener todos sus demás campos de metadatos.
Por ejemplo:
$user = get_user_by( 'email', 'useremail@gmail.com' );
$userdata = get_userdata( $user->ID );
$first_name = $userdata-> first_name;

Ok, pero ¿cómo puedo usar esos comandos para mostrar el campo meta (bio) particular para un ID de usuario dado?

get_usermeta
devuelve una gran cantidad de información sobre el usuario incluyendo description
. Entonces, en el ejemplo anterior haríamos referencia a $userdata->description
para obtener el campo de biografía.
Para llamar a la función userdata desde el principio, simplemente omite mi primera línea y pasa el ID a la función get_userdata
.

Hola Mike, entiendo get_usermeta y puedo usarlo para mostrar toda la información de un usuario. Lo que no puedo hacer es llamar al usuario y mostrar la biografía / botones de redes sociales. En otras palabras, no sé cómo codificarlo.

(Yo soy el OP.)
Dos opciones para resolver esto. Estas pueden usarse para mostrar cualquier información de los usuarios registrados en tu sitio web. Voy a mostrarte cómo mostrar una O dos (es decir, más) cosas:
1) Método de Pieter Goosen (Marqué su respuesta como correcta arriba -- gracias de nuevo, Pieter) (Gente, necesitan entrar al perfil del usuario y obtener su número de usuario. Usen ese número en lugar de 9999.
Una cosa:
<?php $walt_id = 9999; // Asegúrate de tener el ID correcto aquí
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
?>
Más de una cosa:
<?php $walt_id = 9999; // Asegúrate de tener el ID correcto aquí
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];
echo $userdata['first_name'][0];
?>
2) Método de stephencottontail:
Una cosa:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
Más de una cosa:
<?php the_author_meta( 'user_description', 9999 ); ?> </br>
<?php the_author_meta( 'first_name', 9999 ); ?>
