web-dev-qa-db-fra.com

Crochet pour éditer une colonne sur les commentaires?

En ce moment je fais

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-t-il un moyen de modifier simplement la colonne auteur au lieu de supprimer et de créer la mienne?

4
user1954882

Il n'y a pas de filtre pour cette colonne. Donc, la réponse est "non".

WP_List_Table recherche la méthode column_ {quelque chose} dans la classe de Lister. Commentaires La classe list a column_author. Donc, tuez cette colonne et créez un filtre comme vous le faites maintenant.

2
Butuzov

Je suis venu à cette question car j'avais besoin d'une chose similaire. Bien qu'une réponse de qwerty-qwerty soit correcte, elle n'est correcte que partiellement pour ainsi dire. Autant que je sache, l'auteur avait besoin de changer le nom d'une colonne, alors que je devais changer le contenu de la colonne auteur elle-même. Donc, bien que cela soit un peu différent, je vais le laisser ici au cas où quelqu'un trouverait cette question comme moi. Cela fonctionne également si vous devez obtenir des données supplémentaires concernant les commentaires qui ne sont pas stockés dans la table meta ni mis en cache comme cette table et ne souhaitez pas effectuer de requête séparée pour chaque élément.

Vous pouvez donc vous connecter au filtre the_comments. Ce filtre transmet un tableau d'instances WP_Comment_Object pour chaque commentaire trouvé qui correspond à la demande. Dans mon cas, les commentaires pouvaient être enregistrés avec un nom autre que le nom d'affichage de l'utilisateur. Le cas échéant, je devais donc obtenir un nom d'affichage réel à partir de la table wp_users et l'afficher comme suit: comment_author_from_wp_comments (display_name_from_wp_users). J'ai parcouru tableau passé par le filtre, déterminé quels commentaires avaient besoin d'informations supplémentaires de la table wp_users, lancé une requête unique vers cette table, puis modifié les éléments du tableau d'origine avec de nouvelles données. Voici une idée générale du fonctionnement de mon code:

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

J'espère que quelqu'un le trouvera utile dans le futur.

1
Igor Yavych