Mixbot: cómo funcionan los avatares de autor (y qué pasa cuando creáis uno con /crear-autor) #171
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resumen para Mixbot
Documentación de cómo se gestionan hoy los avatares de autor, a raíz de que ya tenéis el endpoint
fea/v1/crear-autor(#166) para dar de alta autores nuevos. Importante: ese endpoint NO toca el avatar. Un autor recién creado se queda con el Gravatar/identicon por defecto de WordPress hasta que alguien (hoy, Rafa) le asigne una foto o un avatar de iniciales a mano. No es automático.Cómo se renderiza el avatar en el frontend
Dos filtros en
wordpress/wp-content/mu-plugins/fea-homepage.php(líneas 199-216) yfea-avatar-cachebust.php:get_avatar_url(prioridad 10): lee el meta de usuariofoto_perfil(es un campo ACF que guarda el ID de un attachment de WP, no una URL directa). Si existe, sirvewp_get_attachment_image_url($attach_id, 'full'). Si no hayfoto_perfil, cae al$urloriginal de WP (Gravatar).get_avatar_url(prioridad 20, corre después): añade?v=<filemtime>a las URLs bajo/avatares/autores/autor-*.pngpara romper la caché de Cloudflare cuando se regenera la misma foto.El campo que de verdad importa es
foto_perfil(ACF/attachment). Existe también un meta más antiguofea_foto_url(usado porassign_author_photos.php, un script distinto y más viejo) que no es el que lee el frontend — no lo uséis como referencia, es una pieza suelta de un flujo anterior.Cómo se genera/asigna un avatar hoy (proceso manual, offline)
Dos caminos, ambos ejecutados a mano por Rafa vía
wp eval-file/phpen el servidor:A) Avatar de iniciales (cuando no hay foto real):
scripts/gen_avatars_initials.py— genera un PNG 200×200 con círculo de color (paleta de 10 tonos, determinista por hash MD5 del nombre) + iniciales en blanco. Entrada: TSVuid<TAB>nombre. Salida:wordpress/wp-content/uploads/avatares/autores/autor-<uid>.png.scripts/import_avatars_143.php(o variantes_75/_90) — da de alta ese PNG como attachment de WP (wp_insert_attachment) y actualiza el metafoto_perfildel usuario para que apunte a él. Es idempotente y hace backup del valor previo (_foto_perfil_pre143, etc.).B) Foto real (cuando el autor manda una foto):
scripts/assign_author_photos.php— asigna fotos ya subidas manualmente auploads/quienes_somos/avatars/a un usuario concreto (mappinguser_id => fichero.pnghardcodeado en el script). Este es el flujo más antiguo, usa el metafea_foto_url(ver nota arriba — puede que necesite unificarse confoto_perfilen algún momento, hoy son cosas separadas).face_crop_avatar.py, OpenCV) + regeneración de thumbnails (regen_avatars.php).Qué implica esto para vosotros
/crear-autor, esperad que salga sin foto (Gravatar genérico) hasta que Rafa corra el proceso de arriba./crear-autor: un endpoint acotado tipofea/v1/subir-avatarque reciba una imagen + user_id y haga elwp_insert_attachment+ set defoto_perfil), avisad y lo valoramos como hicimos con el de autores.Relacionado: #166, #147 (fotos de autoras nuevas, mismo problema manual).