Obtener solo la URL de la imagen de perfil del autor dentro de un bucle
Necesito obtener el enlace de la imagen de perfil del autor de la publicación.
Sé que puedo usar get_avatar();
pero muestra todo el marcado HTML de la imagen
<img src="http://.../img.png" class="avatar img-responsive" alt="imagen">
Pero solo necesito el valor del atributo src
de la imagen de perfil del autor.
¿Cómo puedo obtenerlo? Tal vez podamos usar algo de php
o js
para extraer solo el valor del src
de toda la salida.
Mi segunda pregunta es, ¿cómo puedo añadir esa imagen
como post_thumbnail
si no existe una miniatura para esa publicación?
Colocar lo siguiente dentro del bucle debería satisfacer tus necesidades:
<?php
$get_author_id = get_the_author_meta('ID');
$get_author_gravatar = get_avatar_url($get_author_id, array('size' => 450));
if(has_post_thumbnail()){
the_post_thumbnail();
} else {
echo '<img src="'.$get_author_gravatar.'" alt="'.get_the_title().'" />';
}
?>

No creo que get_avatart_uri()
sea un nombre de función existente disponible en WordPress...

https://developer.wordpress.org/reference/functions/get_avatar_url/, parece un error tipográfico.

Además de usar get_avatar_url
, todavía puedes usar get_avatar
. Si no me equivoco, esto es lo que estás buscando.
Pregunta 1
Obtener el enlace de la foto de perfil del autor del post
<?php
// solo mostrar si la función de gravatar existe
if (function_exists('get_avatar')) { ?>
<?php
// Convertir el email en un hash md5 y establecer el tamaño de imagen a 32px
$gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '&s=32';
// Convertir el email en un hash md5 y eliminar el tamaño para usar como imagen de post
$gravatar_bg = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '';
?>
<!-- Mostrar el gravatar como img src -->
<img src="<?php echo "$gravatar";?>" alt="Avatar del autor" title="Foto de perfil del autor">
<!-- Mostrar el gravatar como fondo de url -->
<div class="avatar" style="background: url(<?php echo $gravatar_bg ?>);" ></div>
<?php } ?>
Pregunta 2
Agregar esa imagen como post_thumbnail si no existe una miniatura para ese post
<?php
// Verificar si el post tiene miniatura
// if ( has_post_thumbnail() ) { // opción 1
if ( '' != get_the_post_thumbnail() ) { // opción 2
// si tiene, mostrar la miniatura
the_post_thumbnail();
} else {
// si no, mostrar la imagen de gravatar
echo '<img src="<?php echo "$gravatar";?>" alt="Imagen de Gravatar como miniatura" title="Miniatura alternativa de Gravatar">';
}
?>
Espero que esto ayude, ¡buena suerte!
Recursos: Usando Gravatars | hast_post_thumbnail

Hola, sé que puedo verificar if(get_the_post_thumbnail())
y mostrar esa imagen en la plantilla. Pero eso no establece el post_thumbnail, solo lo muestra en esa plantilla en particular. Quiero hacer set_post_thumbnail
. ¿Cómo hacer esto?

ACTUALIZACIÓN (22 de mayo de 2021) - Estoy usando un plugin Simple Local Avatars para permitir a los usuarios actualizar imágenes localmente. La siguiente solución solo funcionará si usas este plugin.
Por si alguien está buscando la imagen completa del autor y no la encuentra. Aquí hay un pequeño truco.
Método Simple
$avatar_url = get_avatar_url( $author_id ); // Esto devolverá una imagen de 96x96.
$final_url = str_replace('-96x96.', '.', $author_avatar_url);
Reemplazando -96x96.
con solo un .
. Solo hay que asegurarse de que el nombre de la imagen no incluya esta cadena. Alternativamente, puedes buscar la misma cadena desde el final y hacer el reemplazo usando substr_replace()
así:
Método Más Preciso
$avatar_url = get_avatar_url( $author_id ); // Esto devolverá una imagen de 96x96.
$replace = '-96x96.';
$pos = strpos($avatar_url, $replace, -(strlen($replace)+5)); // +5 para la longitud de la extensión
$final_url = substr_replace($avatar_url, '.', $pos, strlen($replace));
Este es el primer resultado en Google al buscar la imagen completa del autor, así que podría ayudar a alguien.

No creo que eso funcione para los Gravatars por defecto: el tamaño no está en la URL de esa manera, es un parámetro ?s=
. ¿Cómo tienes configurados tus avatares? Además, get_avatar_url tiene un parámetro 'size' documentado para el array de argumentos.

@Rup ¡¡¡Lo siento!!! Tienes razón, estoy usando "Simple Local Avatars"(https://wordpress.org/plugins/simple-local-avatars/) para permitir que los usuarios configuren sus imágenes de perfil localmente y creo que el plugin me permite obtener una URL en el formato que estoy recibiendo. Completamente olvidé este plugin. Añadiré esta información del plugin en la respuesta anterior.
