Filtrage de la liste des commentaires de l'administrateur pour afficher uniquement les commentaires de l'utilisateur actuel?

10

Dans la page Commentaires ( /wp-admin/edit-comments.php ), tous les utilisateurs connectés peuvent voir tous les commentaires du site.

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

Comment puis-je filtrer cela?

    
posée moonvader 27.06.2012 - 10:40

1 réponse

9

L’une ou l’autre de ces 3 solutions 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;
}

De plus, vous pouvez utiliser global $pagenow pour vous assurer que le code ne fonctionne que sur cette page.

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

Modifier:

/**
 * 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;
}
    
réponse donnée Rutwick Gangurde 27.06.2012 - 11:44

Lire d'autres questions sur les étiquettes