Как разрешить пользователям видеть только те комменты в админке, которые оставлены к их постам

По умолчанию пользователи с ролями авторов и участников в любом случае не могут редактировать комментарии, оставленные к чужим постам.

Тем не менее, если вы хотите полностью скрыть от них эти комменты, вставляем код в 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 штук на модерацию, а если перейти на вкладку «Ожидающие», то мы увидим вот что:

комментарии, ожидающие проверки

Такой вот небольшой баг, я не стал ради него заморачиваться и рыскать в файлах движка в поисках подходящих хуков.

Если решение всё же найдется, я обязательно добавлю его в этот пост.

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Vladislav: Подправил имеющийся у меня код, по вашим рекомендациям, миниатюры начали отображаться, но они стали очень огромными, что...

  • Миша: Лишь предложил решение. Думаю можно нашаманить и так, чтобы чисто для рубрик было, не уверен только, что обойдётся без и...

  • Алексей: так надо комментарии в рубриках, а не на страницах в category.php а не в page.php

  • Миша: Здравствуйте! Сам WordPress это не поддерживает, но можно пойти хитрым путём. Первое, что пришло мне в голову, это:...

  • Алексей: Миша, здравствуйте! Подскажите, пожалуйста, что нужно, чтобы сделать комментарии на страницах рубрик. Я когда то давно...