Gancho para editar uma coluna na tela de comentários?

4

No momento estou fazendo

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 );

Existe uma maneira de editar a coluna do autor em vez de remover e criar a minha própria?

    
por user1954882 30.01.2013 / 14:25

2 respostas

2

Não há filtro para esta coluna. Então a resposta é 'Não'.

WP_List_Table procura pelo método column_ {something} dentro da classe do Lister. A classe de lista de comentários tem column_author. Então mate essa coluna e crie um filtro como você faz agora.

    
por Butuzov 30.01.2013 / 14:30
2

Eu cheguei a esta questão desde que eu precisava de uma coisa semelhante. Embora uma resposta por qwerty-qwerty esteja correta, é correto apenas parcialmente, por assim dizer. Tanto quanto eu entendo, o autor precisava alterar o nome de uma coluna, enquanto eu precisava alterar o conteúdo da própria coluna do autor. Então, enquanto isso é um pouco diferente, vou deixar aqui caso alguém encontre essa pergunta como eu fiz. Isso também funciona se você precisar obter alguns dados adicionais sobre os comentários que não estão armazenados na tabela meta e não estão armazenados em cache como a tabela mencionada e não querem fazer consultas separadas para cada item.

Então, o que você pode fazer é conectar-se ao filtro the_comments . Esse filtro passa uma matriz de WP_Comment_Object instâncias para cada comentário encontrado que corresponde à solicitação. No meu caso, os comentários poderiam ser salvos com nome diferente do nome de exibição do usuário, portanto, onde era o caso, eu precisava obter um nome de exibição real da tabela wp_users e exibi-lo como comment_author_from_wp_comments (display_name_from_wp_users) . Passei pelo array passado pelo filtro, imaginei quais comentários precisavam de informações adicionais da tabela wp_users , executei uma consulta única para essa tabela e, em seguida, modifiquei os elementos dentro do array original com novos dados. Aqui está uma ideia geral de como meu código funciona:

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');

Espero que alguém no futuro ache isso útil.

    
por Igor Yavych 29.03.2017 / 22:28