¿Mostrar nombre de usuario solo para usuarios registrados?

4 minutos de lectura

Tengo un blog de WordPress configurado para mostrar comentarios como “Usuario anónimo” codificándolo en el archivo comments.php. Me gustaría que diga el nombre de usuario del usuario junto a su comentario y SÓLO mostrar ese nombre de usuario a ELLOS. En otras palabras, si es un invitado, verá “Usuario anónimo” y si es un usuario DIFERENTE registrado/iniciado sesión, seguirá viendo “Usuario anónimo”, pero si es SU comentario, aparecerá decir “Tu comentario” o su propio nombre de usuario. ¿Alguna pista sobre un fragmento de código? Esto es lo que tengo hasta ahora:

Anonymous User: <div class="post-txt" id="<?php comment_ID() ?>"><?php comment_text() ?></div>

¡Gracias!

  • ¿Encontraste tu solución aquí? En caso afirmativo, marque la respuesta que seleccionó.

    – Esteban

    2 de septiembre de 2010 a las 9:04

avatar de usuario
Juan P Bloch

function my_custom_comment_author_filter($author){
  global $current_user;
  wp_get_current_user();
  if(!is_category(3)){
    return $author;
  }
  if(0 == $current_user->ID || ($current_user->display_name !== $author && $current_user->user_login !== $author)){
    return 'Anonymous User';
  }
  return $author;
}

add_filter('get_comment_author', 'my_custom_comment_author_filter');

  • necesitará un encabezado ‘varía: Cookie’ si permite el almacenamiento en caché.

    – symcbean

    11 de junio de 2010 a las 15:01

  • @symcbean cierto. Además, si desea que los comentarios muestren el nombre del autor de la publicación a todos, deberá agregar otra verificación contra el autor. Además, podría ser una buena idea usar solo el nombre del autor del comentario, no el enlace del autor del comentario.

    – John P Bloch

    11 de junio de 2010 a las 15:32

  • Ok, lo intenté de esta manera, y al principio recibía un error, así que tuve que eliminar el signo = entre las dos primeras palabras (función = my_custom…) y luego arrojó otro error, $end inesperado, así que agregué un segundo close } después del último y antes del add_filter. Ahora, no más errores, pero cuando trato de poner mi nueva función en mi archivo de tema, aparece otro error que me dice que requiere argumentos. No estoy seguro de qué argumentos usar. Estaba escribiendo “” pero aparentemente eso no funcionaba. ¿Algunas ideas? ¡muchas gracias!

    – Rodeo Ramsey

    13 de junio de 2010 a las 14:28

  • sí. Debe mantener $author en la declaración de la función. Así es como se pasa el argumento a la función. Editaré la respuesta para reflejar tus cambios. Lo siento por esos. Supongo que los extrañé…

    – John P Bloch

    13 de junio de 2010 a las 19:36

  • Ok, bueno, por alguna extraña razón, agregar esto a mi archivo functions.php y no hacer nada más aplica esto al panel de administración (sección de comentarios). ¿Alguna idea de por qué? Solo quiero que esta función funcione para el front-end. Quiero que cualquiera que tenga acceso al back-end pueda ver los nombres de usuario correctos.

    – Rodeo Ramsey

    14 de junio de 2010 a las 3:17

Básicamente, deberá obtener la identificación del autor del comentario, obtener la identificación del usuario que inició sesión y comparar las dos. Mira esto obtener el usuario conectado actual y obtener información sobre el comentario actual del Códice.

No he probado este fragmento, pero debería indicarle la dirección correcta:

<?php global $user_id, $user_login; 
    get_currentuserinfo();  // This will populate $user_id with the logged in user's ID or '' if not logged in
    $the_comment = get_comment(comment_ID());  // Get a comment Object...
    $author_id = $the_comment->user_id; // and extract the commenter's ID

    if($user_id !== '' && $author_id == $user_id){
        echo 'Your comment [ ' . $user_login . ' ]:';
    }
    else{
        echo 'Anonymous User:';
    }
?>

  • La respuesta anterior de John P. Bloch es realmente agradable. Agregar eso a su archivo functions.php le permitiría llamarlo en cualquier lugar.

    – ajm

    11 de junio de 2010 a las 14:30

  • Probé la respuesta anterior y no pude hacer que funcionara, así que probé tu respuesta para ver si funcionaba y parece agregar un dígito al lado del texto del usuario anónimo, pero no se muestra correctamente. ¡Gracias!

    – Rodeo Ramsey

    13 de junio de 2010 a las 14:29

  • ¿Podría intentar hacer eco de $user_id, $author_id y $user_login para ver qué regresa? ¿Está viendo los detalles del usuario que ha iniciado sesión actualmente y el ID del autor del comentario?

    – ajm

    14 de junio de 2010 a las 15:57

Comprobar si el visitante actual ha iniciado sesión
http://codex.wordpress.org/Function_Reference/is_user_logged_in

<?php if ( is_user_logged_in() ) { 
    ....
} else {
    ....
} ?> 

  • Bueno, eso solo funciona para hacerme saber si estoy conectado o no, pero no separa las dos declaraciones condicionales. Creo que ese es el comienzo correcto, pero creo que debe decir algo como “si el usuario está conectado, Y, el nombre de usuario es = al mismo inicio de sesión”, pero no tengo idea de cómo codificar eso…

    – Rodeo Ramsey

    11 de junio de 2010 a las 14:27

¿Ha sido útil esta solución?