Lọc danh sách bình luận của quản trị viên để chỉ hiển thị nhận xét từ người dùng hiện tại?


10

Trong trang Nhận xét ( /wp-admin/edit-comments.php), mọi người dùng đã đăng nhập có thể thấy tất cả các nhận xét trang web.
trang bình luận


Tôi muốn người dùng chỉ xem bình luận của riêng anh ấy / cô ấy và những bình luận để lại cho bài đăng của anh ấy / cô ấy.

Làm thế nào tôi có thể lọc này?

Câu trả lời:


9

Một trong 3 điều này sẽ giúp bạn:

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

Ngoài ra, bạn có thể sử dụng global $pagenowđể đảm bảo rằng mã chỉ chạy trên trang này.

Xin lỗi hôm nay tôi không khỏe, vì vậy không thể viết ra một ví dụ! ;)

Biên tập:

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

cảm ơn bạn đã trả lời - chỉ vài giờ trước tôi đã tìm thấy bài viết để giải quyết vấn đề như vậy cho các bài đăng trong blog của bạn! Tôi thậm chí còn tìm thấy thông số cho các bình luận nhưng tôi không biết ho để thiết lập id người dùng đã đăng nhập hiện tại. Nếu tôi chỉ muốn hiển thị bình luận của anh ấy, tôi có thể sử dụng ID của anh ấy nhưng tôi cũng muốn hiển thị bình luận cho bài viết của anh ấy. Làm thế nào nó có thể được thực hiện?
moonvader

Không có gì! Kiểm tra câu trả lời ngay bây giờ, tôi đã cập nhật nó.
Rutwick Gangurde

bây giờ nó đang hiển thị tất cả các thông số bình luận trong trang wp-admin / edit-Comments.php - nhưng tôi vẫn có thể thấy tất cả các bình luận (
moonvader

Đó là bởi vì bạn phải lọc các bình luận! Tôi đã đặt print_r để thử nghiệm vì lợi ích!
Rutwick Gangurde

việc lọc này phải được thực hiện bên trong hàm wpse56652_filt_comm? bạn có thể chỉ cho tôi một ví dụ về cách chỉ hiển thị nhận xét từ người dùng với id = 4 không?
moonvader
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.