กรองรายการความคิดเห็นของผู้ดูแลระบบเพื่อแสดงความคิดเห็นเท่านั้นจากผู้ใช้ปัจจุบันหรือไม่


10

ในหน้าความคิดเห็น ( /wp-admin/edit-comments.php) ผู้ใช้ทุกคนที่เข้าสู่ระบบสามารถดูความคิดเห็นของไซต์ทั้งหมดได้
หน้าความคิดเห็น


ฉันต้องการให้ผู้ใช้เห็นเฉพาะความคิดเห็นของตนเองและความคิดเห็นที่เหลืออยู่ในโพสต์ของเขา / เธอ

ฉันจะกรองสิ่งนี้ได้อย่างไร

คำตอบ:


9

ทั้งสามอย่างนี้จะช่วยให้คุณ:

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

นอกจากนี้คุณสามารถใช้global $pagenowเพื่อให้แน่ใจว่ารหัสทำงานเฉพาะในหน้านี้

ขออภัยฉันรู้สึกไม่ดีวันนี้ดังนั้นจึงไม่สามารถเขียนตัวอย่าง! ;)

แก้ไข:

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

ขอบคุณสำหรับคำตอบ - ไม่กี่ชั่วโมงที่ผ่านมาฉันพบบทความเพื่อแก้ไขปัญหาดังกล่าวสำหรับโพสต์ในบล็อกของคุณ! ฉันยังค้นหา params สำหรับความคิดเห็น แต่ฉันไม่รู้ว่า ho เพื่อตั้งรหัสผู้ใช้ที่บันทึกไว้ในปัจจุบัน ถ้าฉันต้องการเพียงแสดงความคิดเห็นของเขาฉันสามารถใช้ ID ของเขา แต่ฉันก็ต้องการแสดงความคิดเห็นในโพสต์ของเขาด้วย สามารถทำได้อย่างไร?
moonvader

ยินดีต้อนรับคุณ! ตรวจสอบคำตอบตอนนี้ฉันได้ทำการอัพเดทแล้ว
Rutwick Gangurde

ตอนนี้มันแสดง params ความคิดเห็นทั้งหมดในหน้า wp-admin / edit-comments.php - แต่ฉันยังคงสามารถเห็นความคิดเห็นทั้งหมด (
moonvader

นั่นเป็นเพราะคุณต้องกรองความคิดเห็น! ฉันใส่ print_r เพื่อทดสอบสาเก!
Rutwick Gangurde

ต้องทำการกรองภายในฟังก์ชัน wpse56652_filt_comm หรือไม่ คุณสามารถแสดงตัวอย่างวิธีแสดงความคิดเห็นจากผู้ใช้ที่มี id = 4 ได้ไหม
moonvader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.