Es posible que quieras mostrar el nombre del usuario que se ha registrado y posteriormente ha iniciado sesión en tu sitio web WordPress. Muchos sitios web utilizan este sistema que garantiza que el usuario está conectado a la web y puede navegar por la administración del sitio.
Generalidades
La forma de hacer esto es bastante sencilla. Solo tienes que incluir un código en el archivo functions.php de tu tema activo de WordPress, preferiblemente en un tema hijo (child theme) o en un plugin desarrollado para tal cosa, como puede ser por ejemplo un plugin de Snippets.
Creando el ítem de menú
En el panel de administración de WordPress dirígete a Apariencia – Menús y elige el menú donde quieres poner el nombre de usuario. El nuevo ítem de menú tendrá un marcador de posición que posteriormente será reemplazado (lo puedes ver en la captura de pantalla a continuación). Ejemplo: #profile_name#, #usuario#, #nombre#.
Código para interpretar el marcador del ítem de menú
Más adelante incluye el código en el archivo functions.php del tema hijo o del plugin de Snippets. Este es el código que tenemos que incluir:
add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
function my_dynamic_menu_items( $menu_items ) {
$final_menu = [];
foreach ( $menu_items as $menu_item ) {
if ( '#profile_name#' == $menu_item->title ) {
$user=wp_get_current_user();
if ( $user->ID ){
$menu_item->title = $user->user_firstname;
$final_menu[] = $menu_item;
}
} else {
$final_menu[] = $menu_item;
}
}
return $final_menu;
}
Si quieres mostrar el gravatar del usuario podrías usar get_avatar(), el código anterior quedaría como:
add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
function my_dynamic_menu_items( $menu_items ) {
$final_menu = [];
foreach ( $menu_items as $menu_item ) {
if ( '#profile_name#' == $menu_item->title ) {
$user=wp_get_current_user();
if ( $user->ID ){
$avatar = get_avatar( $user->ID, 16 );
$menu_item->title = $avatar." ".$user->user_firstname;
$final_menu[] = $menu_item;
}
} else {
$final_menu[] = $menu_item;
}
}
return $final_menu;
}
Resultado final
Como ves es bastante fácil incluir el nombre del usuario que ha iniciado sesión en nuestro menú de WordPress, dando a la persona que está conectado a la web la facilidad de saber que está vinculado. Al final obtendremos algo similar a lo que se muestra en la siguiente imagen:
Si prefieres ver en formato vídeo como se realiza todo el proceso. Lo puedes ver a continuación:
Ver comentarios (79)
hola Pedro, podrías ayudarme gracias
como hacer que aparezca de esta manera
Hola, no enviaste tu enlace, detalla a qué manera te refieres.
como puedo mostrar el nombre usuario en las entradas
Hola, en este caso tendrías que usar una lógica similar para obtener el usuario dentro de un Shortcode, revisa: https://decodecms.com/que-son-los-shortcodes-en-wordpress-y-como-usarlos/
No es el mismo código el que usas en el vídeo y el que publicas aquí
Hola, si, efectivamente, el código posteriormente fue depurado, el del este artículo debería funcionarte sin problemas.
Saludos.
Hola buen día.. Muy buen articulo muchas felicidades. Como puedo hacer que aparezca el avatar en el menu?
Hola, puedes hacerlo usando el email del $user, tendrías que usar la función que se sugiere en Gravatar, revisa: https://es.gravatar.com/site/implement/images/php/
¿Podrías demostrar como agregar al código el avatar a un lado?
Hola, he actualizado el artículo ahora también hay un código que agrega el avatar.
Muchas gracias!!
Buenas navidades, he seguido tu tutorial y no me funciona, el codigo escrito arriba no se parece al codigo que pones en el video. el codigo #profile_name# lo he puesto en texto del enlace y en la url he puesto # para que me dejara colocarlo en el menu. Después he colocado tu codigo escrito arriba con code snippets y no me funciona. Lo único que ha echo es que el texto de enlace desaparezca del menu pero no me sale el nombre del usuario. Que hago mal si dices que funciona en todas las plantillas?
Hola, el código final es el de este artículo, si que debería funcionarte, asegúrate de que estes conectado con algún usuario, podrías probar con otro theme en caso haya alguna funcionalidad de tu theme que haga conflicto.
me aparece el Avatar pero no el nombre de usuario. AYUDA!!!
Sorry si aparece Gracias!
genial Jhon! es lo que estaba buscando y no habia manera. Sólo una duda, es posible añadir un condición para que muestre primero un texto "tu cuenta" y despues de hacer login cambie por el "nombre" y al salir vuelva a mostrar "tu cuenta"? Saludos!
bien, la idea es para Woocommerce, substituir el "Mi Cuenta" por el nombre del usuario una vez se ha hecho login/registro.
Hola, la idea sería que amplíes con un else el código de comprobación del ID, (o lo que es lo mismo comprobación si el usuario esta conectado)
Evaluaré hacer esto para WooCommerce con el ítem de menú de mi cuenta, ya que con este código de este artículo tendrías que usar un ítem de menú personalizado.
Saludos.
Gracias por el aportem una consulta como puedo agregar la palabara "Hola" antes el nombre, es posible poner en cualquier otro lugar de la web?]
Hola, puedes modificar la siguiente línea de código
Saludos.
Hola, grandioso, una consulta: con el item de "mi cuenta" de Woo, se podrá hacer??
Hola, si, aunque WooCommerce ya te genera una página de "Mi cuenta" que puedes usar.
El codigo del video tampoco funciona....
Hola, el código que deberías probar es el del artículo, ¿qué error te aparece?, usas algún plugin para el menú?. Saludos.