ในหน้าความคิดเห็น ( /wp-admin/edit-comments.php
) ผู้ใช้ทุกคนที่เข้าสู่ระบบสามารถดูความคิดเห็นของไซต์ทั้งหมดได้
ฉันต้องการให้ผู้ใช้เห็นเฉพาะความคิดเห็นของตนเองและความคิดเห็นที่เหลืออยู่ในโพสต์ของเขา / เธอ
ฉันจะกรองสิ่งนี้ได้อย่างไร
ในหน้าความคิดเห็น ( /wp-admin/edit-comments.php
) ผู้ใช้ทุกคนที่เข้าสู่ระบบสามารถดูความคิดเห็นของไซต์ทั้งหมดได้
ฉันต้องการให้ผู้ใช้เห็นเฉพาะความคิดเห็นของตนเองและความคิดเห็นที่เหลืออยู่ในโพสต์ของเขา / เธอ
ฉันจะกรองสิ่งนี้ได้อย่างไร
คำตอบ:
ทั้งสามอย่างนี้จะช่วยให้คุณ:
//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;
}