PHP-функция для WordPress “Ответ на комментарий %username%”
Я придумал и реализовал очередную полезную фигнюшку для WordPress ツ
Суть
Мне очень давно не хватало в WordPress нижеследующих двух простых и, вроде бы, банальных вещей, которые разработчики движка почему-то не додумаются сделать по умолчанию.
Обе функции касаются письма, которое получает администратор сайта после того, как на блоге был добавлен новый комментарий.
Вот о чем я говорю:
- Если на блоге активирована опция “древовидные комментарии”, было бы очень здорово в письме видеть текст о том, кому был оставлен комментарий: мне, как админу, или же кому-то из комментирующих посетителей. По тексту можно будет сразу понять, не заходя в блог, требует этот комментарий моего ответа или нет.
- Так же было бы здорово, если в том же самом письме будет присутствовать прямая ссылка на добавленный комментарий. Опять же это может быть в первую очередь полезно при древовидных комментах. Такая ссылка позволит не искать нужный коммент (ведь он может быть и не в конце списка комментов), а сразу же перейти к нему.
Практика использования этих двух “добавочек” на данном блоге показала, что это весьма полезные штуки. Я уже привык к ним, и в других моих блогах таких функций мне теперь не хватает.
Код PHP-функции
Реализация обоих вещей оказалась довольно простой (эту функцию необходимо запихнуть в файл functions.php вашей темы, если файла нет, то создать его, не забыв добавить <?php и ?> соответственно в начале и в конце файла):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); |
Пожалуй, единственное, на что стоит обратить внимание в этом коде, строка:
1 | if ($parentComment->user_id == 1) { |
где цифра 1 - это идентификатор пользователя. Думаю, в большинстве случаев он будет таким же.
Как выглядит результат
Соответствующий текст добавляется к конце письма, и выглядит это примерно следующим образом (кликабельно):
Если это ответ на коммент кого-то из посетителей, то видим текст “В ответ на комментарий пользователя: %username%“. Если же это ответ на коммент админа, то текст будет таким: “Это ответ на мой комментарий.” Текст, естественно, можно заменить на какой-то другой.
Плюсом я еще перед прямой ссылкой на комментарий добавил напоминалочку “необходимо одобрить“, если комментарий ожидает модерации.
Что дальше?
- Есть мысль сделать из этого мой очередной плагин.
- Среди пользователей WordPress очень популярен плагин “Subscribe To Comments” (функционал которого, я считаю, уже давно должен быть частью движка), который отправляет письма посетителям сайта, если был оставлен новый коммент. Так вот, если реализовать 2 вышеописанные вещи и для этого плагина, тогда было бы вообще супер - полезность функции существенно бы возросла. Думаю, что это вполне реально сделать.

Думаю плагин был бы полезнее
Мне кажется, отличная идея. У меня в данный момент на блоге вообще нет “древовидного комментаторства”. Все сплошной полосой идёт. И это очень неудобно. Но после смены дизайна, мне бы хотелось, чтобы сообщения именно в таком виде и приходили.
Вот это действительная полезная штука! Спасибо тебе!)))
Я воспользовался вашими советами. Очень удобно, хоть понятно откуда коммент и с чем его есть!
хорошие рекомендации
Здравствуйте, я чото та и не понял возможно ли сделать функцию “Уведомление об ответах на мои комментарии по e-mail”
А можно как-нибудь разбить комментарии на 2 вида, скажем, позитивные и негативные, и пустить их в 2 потока?
Чем же?? Тормозами при подзагрузке?? Выносить 20 строк кода в отдельный плагин как то глупо выглядит ИМХО. А открыть function.php редактором и Ctrl+C - Ctrl+V неужели так тяжело сделать?? =)
Как вы себе интересно это представляете?? О_О
Я так понимаю, если древовидные комментарии отключены то скрипт становится бесполезен (ну за исключением наличия прямой ссылки)?? И еще, не знаете, будет ли он корректно работать с Comment Referrers (плагин\скрипт показывающий откуда пришел на страницу пользователь)??
А сайт в ссылке первого комментатора и правда жесть. Аж не ожидал =)))
Итересно)) Реализую у себя!
Здравствуйте! Скажите пожалуйста, извиняюсь что не в тему, а у Ваших комментариев кнопка ответить - это стандартная или плагин какой то для древовидных комментариев? Не подскажите?
И не стандартная, и не плагин. Писал под себя скрипт.
А у Вас на блоге не специальной статьи посвященной этому решению? Я заметил что ссылка ответить не содержит replytocom, с которой у меня постоянные проблемы…
Нет, я об этом не писал. На этом блоге стоит WordPress 2.3, поэтому пришлось писать скрипт для древовидных комментариев. А в тех версиях WP, где древовидные поддерживаются стандартно, я никаких проблем не испытывал. Странно, что у вас они есть.
Хорошо, спасибо за столь быстрые ответы!
Интересная идея
Дак а куда именно вставлять код.Куда именно-имеется ввиду в начало,середину или в конец php файла?Я поставил в конец и уменя ничего не изменилось.Помоему этот код хрень полная
Если хрень, зачем тогда спрашиваешь?
Скажите, пожалуйста, как возможно настроить ответ на оповещение о необходимости модерации коммента прямо автору коммента, а не wordpress@domain.ru? Заранее спасибо вам!
Не знаю.