Llegué a esta pregunta porque necesitaba algo similar. Si bien la respuesta de qwerty-qwerty es correcta, es correcta solo parcialmente, por así decirlo. Según tengo entendido, el autor necesitaba cambiar el nombre de una columna, mientras que yo necesitaba cambiar el contenido de la propia columna del autor. Entonces, aunque esto es un poco diferente, lo dejaré aquí en caso de que alguien encuentre esta pregunta como yo. Esto también funciona si necesita obtener algunos datos adicionales con respecto a los comentarios que no se almacenan en la tabla de metadatos y no se almacenan en la memoria caché como dicha tabla y no desea realizar una consulta por separado para cada elemento.
Entonces, lo que puedes hacer es enganchar en the_comments
filter. Este filtro pasa una matriz de WP_Comment_Object
de instancias para cada comentario encontrado que coincida con la solicitud. En mi caso, los comentarios podrían guardarse con un nombre diferente al nombre de visualización del usuario, por lo que, en ese caso, necesitaba obtener un nombre de visualización real de la tabla wp_users
y mostrarlo como comment_author_from_wp_comments (display_name_from_wp_users)
. Revisé la matriz aprobada por el filtro, calculé qué comentarios necesitaban información adicional de la tabla wp_users
, ejecuté una consulta única en esa tabla y luego modifiqué los elementos dentro de la matriz original con datos nuevos. Aquí hay una idea general de cómo funciona mi código:
function my_filter($objects)
{
global $current_screen;
if (is_admin() && $current_screen->id == 'edit-comments') // I only needed it on that screen within admin
{
if (count($objects) > 0)
{
foreach ($objects as $key => $object)
{
//find out which comments needed 'fixing'
}
//do the actual fixing
}
}
return $objects; //return modified or unmodified array
}
add_filter('the_comments', 'my_filter');
Con suerte, alguien en el futuro encontrará esto útil.