web-dev-qa-db-fra.com

Dans l'administration, comment puis-je afficher les commentaires d'un utilisateur donné?

Dans la section des utilisateurs, je peux voir un lien vers leurs messages, mais pas leurs commentaires. Quand je vais aux commentaires, il ne semble pas y avoir de moyen simple de filtrer uniquement les commentaires d’un utilisateur spécifique. Comment faire? (Je suis sûr que cette fonctionnalité de base doit exister quelque part, je ne la trouve pas.)

2
Borek Bernard

Afaik, il n'y a pas de solution simple pour cela.

Vous devrez étendre le WP_List_Table et ajouter une colonne supplémentaire. Ce serait un exemple de fonction:

function wpse_get_comments_by_user( $user_ID )
{
    global $wpdb;

    $rows = $wpdb->query( $wpdb->prepare(
         "
            SELECT * 
            FROM %s
            WHERE user_id = %d
         "
        ,$wpdb->comments
        ,(int) $user_ID
    ) );

   return $rows;
}

La fonction ↑ ci-dessus vous renvoie toutes les lignes de la base de données pour les commentaires de l'utilisateur que vous avez spécifié par son ID.

Vous pouvez alors aller et lister par exemple toutes les publications dans une boucle foreach:

foreach ( wpse_get_comments_by_user( $user->ID ) as $comment )
{
    $post_link = get_permalink( $comment->comment_post_ID );

    echo "<a href='{$post_link}'>";
        // apply the excerpt filters in case the comment content is too long
        echo apply_filters( 'the_excerpt', $comment->comment_content );
        // Add the date
        echo $comment->comment_date;
    echo '</a>';
}

Le problème, c’est qu’il n’existe aucun écran d’administrateur où vous pouvez répertorier les commentaires par utilisateur. Donc, je dirais que ce serait plus facile de faire cela avec un lien et un modèle de page où vous cachez le contenu derrière current_user_can( 'manage_options' );.

1
kaiser