Filtrer la liste des commentaires de l'administrateur pour n'afficher que les commentaires de l'utilisateur actuel?

10

Dans la page Commentaires ( /wp-admin/edit-comments.php), chaque utilisateur connecté peut voir tous les commentaires du site.
page de commentaires


J'aimerais que les utilisateurs ne voient que ses propres commentaires et les commentaires qui sont laissés à ses messages.

Comment puis-je filtrer cela?

Moonvader
la source

Réponses:

9

L'un ou l'autre de ces 3 vous aidera:

//Before getting the comments, on the WP_Comment_Query object for each comment
add_action('pre_get_comments', 'wpse56652_filt_comm');

//Applied on the comments SQL Query, you can modify the 'Where' part of the query
add_filter('comments_clauses', 'wpse56652_filt_comm');

//After the comments are fetched, you can modify the comments array
add_filter('the_comments', 'wpse56652_filt_comm');

function wpse56652_filt_comm($param) {
    //access the current user
    global $current_user;
    get_currentuserinfo();

    //current users id = $current_user->ID;

    //Current users posts, check get_posts params to change as per your need
    $user_posts = get_posts(array('author' => $current_user->ID, 'posts_per_page' => -1));

    echo '<pre>';
    print_r($param);
    echo '</pre>';

    return $param;
}

En outre, vous pouvez utiliser global $pagenowpour vous assurer que le code s'exécute uniquement sur cette page.

Désolé, je suis un peu malade aujourd'hui, donc je n'ai pas pu écrire un exemple! ;)

Éditer:

/**
 * Show only the Comments MADE BY the current logged user
 * and the Comments MADE TO his/hers posts.
 * Runs only for the Author role.
 */

add_filter('the_comments', 'wpse56652_filter_comments');

function wpse56652_filter_comments($comments){
    global $pagenow;
    global $user_ID;
    get_currentuserinfo();
    if($pagenow == 'edit-comments.php' && current_user_can('author')){
        foreach($comments as $i => $comment){
            $the_post = get_post($comment->comment_post_ID);
            if($comment->user_id != $user_ID  && $the_post->post_author != $user_ID)
                unset($comments[$i]);
        }
    }
    return $comments;
}
Rutwick Gangurde
la source
merci pour la réponse - il y a quelques heures à peine, j'ai trouvé un article pour résoudre ce problème pour les articles de votre blog! Je trouve même des paramètres pour les commentaires, mais je ne sais pas comment définir l'ID utilisateur enregistré actuel. si je veux juste montrer seulement ses commentaires, je peux utiliser son identifiant mais je veux aussi montrer des commentaires à ses messages. Comment cela peut-il être fait?
moonvader
Vous êtes les bienvenus! Vérifiez la réponse maintenant, je l'ai mise à jour.
Rutwick Gangurde
maintenant, il affiche tous les paramètres de commentaire dans la page wp-admin / edit-comments.php - mais je peux toujours voir tous les commentaires (
moonvader
C'est parce que vous devez filtrer les commentaires! J'ai mis ce print_r pour tester l'amour!
Rutwick Gangurde
ce filtrage doit être effectué à l'intérieur de la fonction wpse56652_filt_comm? pouvez-vous me montrer un exemple comment afficher uniquement les commentaires de l'utilisateur avec id = 4?
moonvader