Memfilter Daftar Komentar Admin untuk Hanya Tampilkan Komentar dari Pengguna Saat Ini?

10

Di halaman Komentar ( /wp-admin/edit-comments.php), setiap pengguna yang masuk dapat melihat semua komentar situs.
halaman komentar


Saya ingin para pengguna hanya melihat komentarnya sendiri dan komentar yang ada di posnya.

Bagaimana saya bisa memfilter ini?

moonvader
sumber

Jawaban:

9

Salah satu dari 3 ini akan membantu Anda:

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

Selain itu Anda dapat menggunakan global $pagenowuntuk memastikan bahwa kode hanya berjalan di halaman ini.

Maaf saya agak tidak sehat hari ini, jadi tidak bisa menuliskan contoh! ;)

Edit:

/**
 * 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
sumber
terima kasih atas jawabannya - hanya beberapa jam yang lalu saya menemukan artikel untuk menyelesaikan masalah untuk posting di blog Anda! Saya bahkan menemukan params untuk komentar tetapi saya tidak tahu ho untuk mengatur id pengguna yang tercatat saat ini. jika saya hanya ingin menunjukkan komentarnya saja saya dapat menggunakan ID-nya tetapi saya juga ingin menunjukkan komentar pada posting-nya. Bagaimana itu bisa dilakukan?
moonvader
Sama-sama! Periksa jawabannya sekarang, saya sudah memperbaruinya.
Rutwick Gangurde
sekarang ini menampilkan semua params komentar di halaman wp-admin / edit-comments.php - tetapi saya masih dapat melihat semua komentar (
moonvader
Itu karena Anda harus memfilter komentar! Saya telah meletakkan print_r itu untuk kepentingan pengujian!
Rutwick Gangurde
pemfilteran ini harus dibuat di dalam fungsi wpse56652_filt_comm? dapatkah Anda menunjukkan kepada saya contoh cara hanya menampilkan komentar dari pengguna dengan id = 4?
moonvader