Hook para editar una columna en la pantalla de comentarios?

4

En este momento estoy haciendo

add_filter("manage_edit-comments_columns", function($columns) {
        unset($columns["author"]);
        $columns_one = array_slice($columns,0,1);
        $columns_two = array_slice($columns,1);
        $columns_one["user"] = "User";
        $columns = $columns_one + $columns_two;
        return $columns;
    });

add_filter( 'manage_comments_custom_column', function($column, $column_id) {
        echo "Test";
    },10, 2 );

¿Hay alguna forma de editar la columna del autor en lugar de eliminar y crear la mía?

    
pregunta user1954882 30.01.2013 - 14:25

2 respuestas

2

No hay filtro para esta columna. Así que la respuesta es 'No'.

WP_List_Table busca el método column_ {something} dentro de la clase de Lister. Lista de comentarios clase tiene column_author. Así que elimine esta columna y cree un filtro como lo hace ahora.

    
respondido por el Butuzov 30.01.2013 - 14:30
2

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.

    
respondido por el Igor Yavych 29.03.2017 - 22:28

Lea otras preguntas en las etiquetas