Comment Approved — автоматические уведомления о подтвержденных комментариях

Click here to view original web page at wordpressinside.ru
Плагин Comment Approved

Базовый механизм комментариев в WordPress обладает всеми необходимыми функциями, однако с помощью дополнительных плагинов можно сделать его еще лучше. Самые популярные модули по данной теме, которые я также использую – это подписка на комменты Subscribe To Comments Reloaded и Akismet для борьбы со спамом. Сегодня хочу добавить в этот список еще одно решение, улучшающее юзабилити для ваших читателей – называется оно Comment Approved. Плагин отправляет email-уведомления после одобрения вами комментариев пользователей на сайте.

Зачем он нужен?

Изначально в настройках системы в разделе «Параметры» — «Обсуждение» вы можете включить модерацию каждого нового коммента от посетителей. Если у вас слишком популярный блог или сразу несколько проектов, данный процесс будет отнимать много времени. Поэтому, думаю, более эффективно аппрувить только первое сообщение/отзыв от посетителя. Это экономит ваше время и нормально защищает от автоспама.

Модерация комментариев в Вордпресс

После включения опции, значительная часть комментов будет отправлена на модерацию, и они не появятся в блоге до тех пор, пока админ их не одобрит. К сожалению, не всегда получается выполнить проверку записи сразу после размещения, иногда процесс затягивается на несколько часов или даже суток (по себе знаю). За это время посетитель может попросту забыть о своем комментарии (или забить). Чтобы в нужный момент ему напомнить о нем, как раз и используется Comment Approved.

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

  • во-первых, вернете человека на свой сайт;
  • во-вторых, продемонстрируете хороший пример заботы о пользователе.

Установка и настройка Comment Approved

Модуль максимально простой, устанавливается из админки или классическим методом. После его активации переходите в раздел “Параметры” в одноименный пункт “Comment Approved” для задания основных настроек.

Настройки Comment Approved
Здесь есть такие параметры:
  • Enable – непосредственно вывод сообщения с запросом хочет ли комментатор получить уведомление о успешной модерации его отзыва.
  • Default state – состояние чекбокса по умолчанию: дат / нет.
  • Subject – тема для отправляемого email’а.
  • Message – формируете содержимое письма. Здесь можно использовать внутренние шорткоды: permalink – ссылка на пост, the_title – его заголовок и name – имя юзера.
  • E-mail type – формат письма HTML или обычный текст.

Два из трех шорткодов, кстати, разрешается применять и в параметре «Subject». Лично эти поля оставил такими, какие они были по умолчанию. Обязательно включаете опцию «Enable», а по поводу «Default state» решайте самостоятельно как лучше.

Вот приблизительный вид формы у меня:

Comment Approved - уведомление о модерации комментариев
Дополнительные хаки и перевод

Один из минусов модуля – тут нет локализации, но разработчики предусмотрели подобную опцию. Перевод создаем с помощью программы Poedit, о которой я уже когда-то рассказывал.

  1. На FTP-сервере вашего сайта в директории с плагином находите исходник comment-approved.pot. Скачиваете его на компьютер.
  2. Далее запускаете Poedit и открываете данный файл там.
  3. Переводите нужные фразы и слова, после чего сохраняете результат в comment-approved-ru_RU.po (плюс автоматически создается еще и *.mo файл).
  4. Загружаете оба файла в wp-content/languages/plugins.

Изначально в одной из прошлых версий Comment Approved локализация никак не хотела работать, поэтому для внедрения модуля приходилась добавлять один хак. Сначала в его настройках отключалось отображение надписи (опция Enable), а затем в файле функций размещался сниппет:

add_filter( 'comment_form_default_fields', 'my_comment_form_default_fields' );
function my_comment_form_default_fields( $fields ) {
//	$fields['new1'] = CommentApproved::approve_comment_option();
	$fields['new2'] = '<p class="comment-form-notify-me">
				<label>
					<input checked="checked" name="comment-approved_notify-me" value="1" type="checkbox">
					Уведомлять по email когда комментарий будет одобрен. 
				</label>
			</p>';
	return $fields;
}

Внимание! В последних версиях WP эта конструкция уже не срабатывает, плюс, и как я сказал выше, она уже не нужна.

Меняем позицию чекбокса

Теоретически, можно попробовать совместить озвученный выше хак с информацией из статьи про перестановку полей в форме комментариев — возможно, у вас получится найти причину ошибки и скомпоновать эти решения. Но я нашел вариант попроще (хоть и не совсем корректный):

  1. Заходим на FTP вашего сайта в content/plugins/comment-approved/classes, где скачиваем файл main.php.
  2. Здесь в 50-той (или около того) строчке есть код:
add_action( 'comment_form_after_fields', array( $this, 'approve_comment_option' ), 10, 1 );
  1. Вам нужно заменить параметр comment_form_after_fields, например, на comment_form_before_fields.
  2. Загружаете файл обратно и смотрите, что получилось.

После этого вместо вывода информации модуля под всеми inpet-полями формы чекбокс/текст Comment Approved отобразится перед ними. Это может пригодиться для нестандартных шаблонов или при использовании того же плагина Jetpack WordPress, где меняются местами поля формы комментирования.

Опять же, теоретически, задачу можно решить через хаки, но как я не пытался убрать прошлый экшн с помощью remove_action и создавая новый в файле функций, ничего не вышло. Дабы не тратить время на поиск истины, думаю, эффективнее просто подправить одну строку в php-исходниках модуля (тем более, что обновляется он не часто).

Кстати, про апдейты – последний был год назад + на оф.сайте указана одна нерешенная проблема. Не факт, что автор будет продолжать разработку своего детища, т.к. скачали его чуть больше 1000 человек. Но на данный момент (версия 1.6.1.) все работает нормально – уведомления на почту приходят, тестировал лично.

Альтернатив Comment Approved не встречал, может вы знаете? Надо будет еще глянуть Jetpack, вдруг опцию добавили и там…