Filtrowanie listy komentarzy administratora, aby wyświetlać tylko komentarze bieżącego użytkownika?

10

Na stronie Komentarze ( /wp-admin/edit-comments.php) każdy zalogowany użytkownik może zobaczyć wszystkie komentarze do witryny.
strona z komentarzami


Chciałbym, aby użytkownicy widzieli tylko jego / jej komentarze i komentarze pozostawione jego postom.

Jak mogę to filtrować?

Moonvader
źródło

Odpowiedzi:

9

Każda z tych 3 pomoże ci:

//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;
}

Dodatkowo możesz użyć, global $pagenowaby upewnić się, że kod działa tylko na tej stronie.

Przepraszam, że dzisiaj źle się czuję, więc nie mogłem zanotować przykładu! ;)

Edytować:

/**
 * 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
źródło
dziękuję za odpowiedź - zaledwie kilka godzin temu znalazłem artykuł dotyczący rozwiązania takiego problemu dla postów na blogu! Nawet znajduję parametry komentarzy, ale nie wiem, jak ustawić bieżący zalogowany identyfikator użytkownika. jeśli chcę tylko wyświetlać tylko jego komentarze, mogę użyć jego identyfikatora, ale chcę też wyświetlać komentarze do jego postów. Jak można to zrobić?
moonvader
Nie ma za co! Sprawdź odpowiedź teraz, zaktualizowałem ją.
Rutwick Gangurde
teraz pokazuje wszystkie parametry komentarzy na stronie wp-admin / edit-comments.php - ale nadal widzę wszystkie komentarze (
moonvader
To dlatego, że musisz filtrować komentarze! Umieściłem ten print_r do testów!
Rutwick Gangurde
to filtrowanie musi być wykonane wewnątrz funkcji wpse56652_filt_comm? czy możesz mi pokazać przykład, jak wyświetlać tylko komentarze użytkownika o id = 4?
moonvader