PHP-функция для WordPress «Ответ на комментарий %username%»
Я придумал и реализовал очередную полезную фигнюшку для WordPress ツ
Суть
Мне очень давно не хватало в WordPress нижеследующих двух простых и, вроде бы, банальных вещей, которые разработчики движка почему-то не додумаются сделать по умолчанию.
Обе функции касаются письма, которое получает администратор сайта после того, как на блоге был добавлен новый комментарий.
Вот о чем я говорю:
- Если на блоге активирована опция «древовидные комментарии», было бы очень здорово в письме видеть текст о том, кому был оставлен комментарий: мне, как админу, или же кому-то из комментирующих посетителей. По тексту можно будет сразу понять, не заходя в блог, требует этот комментарий моего ответа или нет.
- Так же было бы здорово, если в том же самом письме будет присутствовать прямая ссылка на добавленный комментарий. Опять же это может быть в первую очередь полезно при древовидных комментах. Такая ссылка позволит не искать нужный коммент (ведь он может быть и не в конце списка комментов), а сразу же перейти к нему.
Практика использования этих двух «добавочек» на данном блоге показала, что это весьма полезные штуки. Я уже привык к ним, и в других моих блогах таких функций мне теперь не хватает.
Код PHP-функции
Реализация обоих вещей оказалась довольно простой (эту функцию необходимо запихнуть в файл functions.php
вашей темы, если файла нет, то создать его, не забыв добавить <?php
и ?>
соответственно в начале и в конце файла):
function repliedToComment($text, $comment_id) { $comment = get_comment($comment_id); $parent_id = $comment->comment_parent; $parentComment = get_comment($parent_id); if ($parent_id > 0) { if ($parentComment->user_id == 1) { $text .= "\r\nЭто ответ на мой комментарий."; } else { $text .= "\r\nВ ответ на комментарий пользователя: " . $parentComment->comment_author; } } $approved = ''; if ($comment->comment_approved != 1) $approved = ' (необходимо одобрить)'; $text .= "\r\nОтветить" . $approved . ": " . get_comment_link($comment->comment_ID) . "\r\n"; return $text; } add_filter('comment_notification_text', 'repliedToComment', 10, 2); add_filter('comment_moderation_text', 'repliedToComment', 10, 2);
Пожалуй, единственное, на что стоит обратить внимание в этом коде, строка:
if ($parentComment->user_id == 1) {
где цифра 1 — это идентификатор пользователя. Думаю, в большинстве случаев он будет таким же.
Как выглядит результат
Соответствующий текст добавляется к конце письма, и выглядит это примерно следующим образом (кликабельно):
Если это ответ на коммент кого-то из посетителей, то видим текст «В ответ на комментарий пользователя: %username%». Если же это ответ на коммент админа, то текст будет таким: «Это ответ на мой комментарий.» Текст, естественно, можно заменить на какой-то другой.
Плюсом я еще перед прямой ссылкой на комментарий добавил напоминалочку «необходимо одобрить«, если комментарий ожидает модерации.
Что дальше?
- Есть мысль сделать из этого мой очередной плагин.
- Среди пользователей WordPress очень популярен плагин «Subscribe To Comments» (функционал которого, я считаю, уже давно должен быть частью движка), который отправляет письма посетителям сайта, если был оставлен новый коммент. Так вот, если реализовать 2 вышеописанные вещи и для этого плагина, тогда было бы вообще супер — полезность функции существенно бы возросла. Думаю, что это вполне реально сделать.