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?
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.
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.