По умолчанию пользователи с ролями авторов и участников в любом случае не могут редактировать комментарии, оставленные к чужим постам.
Тем не менее, если вы хотите полностью скрыть от них эти комменты, вставляем код в functions.php:
function true_get_comments_by_user_posts($clauses) { if (is_admin()) { global $wpdb, $user_ID; $clauses['join'] = ", {$wpdb->prefix}posts"; $clauses['where'] .= " AND {$wpdb->prefix}posts.post_author = ".$user_ID." AND {$wpdb->prefix}comments.comment_post_ID = {$wpdb->prefix}posts.ID"; } return $clauses; } // включаем фильтр, если у пользователя нет прав на редактирование чужих постов, то есть он либо автор, либо участник, либо подписчик if(!current_user_can('edit_others_posts')) { add_filter('comments_clauses', 'true_get_comments_by_user_posts'); } |
После установки этого кода возможны некоторые несоответствия значений счетчика, например:
Как видно из скриншота, к постам какого-то автора оставлено всего два комментария, однако счетчик показывает 9 штук на модерацию, а если перейти на вкладку «Ожидающие», то мы увидим вот что:
Такой вот небольшой баг, я не стал ради него заморачиваться и рыскать в файлах движка в поисках подходящих хуков.
Если решение всё же найдется, я обязательно добавлю его в этот пост.
Источник: misha.blog