PHP-функция для WordPress “Ответ на комментарий %username%”

24 декабря 2009 г.

PHP-функция для WordPress 'Ответ на комментарий %username%' Я придумал и реализовал очередную полезную фигнюшку для WordPress ツ

Суть

Мне очень давно не хватало в WordPress нижеследующих двух простых и, вроде бы, банальных вещей, которые разработчики движка почему-то не додумаются сделать по умолчанию.

Обе функции касаются письма, которое получает администратор сайта после того, как на блоге был добавлен новый комментарий.

Вот о чем я говорю:

  1. Если на блоге активирована опция “древовидные комментарии”, было бы очень здорово в письме видеть текст о том, кому был оставлен комментарий: мне, как админу, или же кому-то из комментирующих посетителей. По тексту можно будет сразу понять, не заходя в блог, требует этот комментарий моего ответа или нет.
  2. Так же было бы здорово, если в том же самом письме будет присутствовать прямая ссылка на добавленный комментарий. Опять же это может быть в первую очередь полезно при древовидных комментах. Такая ссылка позволит не искать нужный коммент (ведь он может быть и не в конце списка комментов), а сразу же перейти к нему.

Практика использования этих двух “добавочек” на данном блоге показала, что это весьма полезные штуки. Я уже привык к ним, и в других моих блогах таких функций мне теперь не хватает.

Код 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 - это идентификатор пользователя. Думаю, в большинстве случаев он будет таким же.

Как выглядит результат

Соответствующий текст добавляется к конце письма, и выглядит это примерно следующим образом (кликабельно):

PHP-функция для WordPress 'Ответ на комментарий %username%'

Если это ответ на коммент кого-то из посетителей, то видим текст “В ответ на комментарий пользователя: %username%“. Если же это ответ на коммент админа, то текст будет таким: “Это ответ на мой комментарий.” Текст, естественно, можно заменить на какой-то другой.

Плюсом я еще перед прямой ссылкой на комментарий добавил напоминалочку “необходимо одобрить“, если комментарий ожидает модерации.

Что дальше?

  1. Есть мысль сделать из этого мой очередной плагин.
  2. Среди пользователей WordPress очень популярен плагин “Subscribe To Comments” (функционал которого, я считаю, уже давно должен быть частью движка), который отправляет письма посетителям сайта, если был оставлен новый коммент. Так вот, если реализовать 2 вышеописанные вещи и для этого плагина, тогда было бы вообще супер - полезность функции существенно бы возросла. Думаю, что это вполне реально сделать.
Теги: , , автор: Dimox | рубрика WordPress

Комментарии (49): »

  1. Думаю плагин был бы полезнее

  2. Мне кажется, отличная идея. У меня в данный момент на блоге вообще нет “древовидного комментаторства”. Все сплошной полосой идёт. И это очень неудобно. Но после смены дизайна, мне бы хотелось, чтобы сообщения именно в таком виде и приходили.

  3. Вот это действительная полезная штука! Спасибо тебе!)))

  4. Я воспользовался вашими советами. Очень удобно, хоть понятно откуда коммент и с чем его есть!

  5. хорошие рекомендации

  6. Здравствуйте, я чото та и не понял возможно ли сделать функцию “Уведомление об ответах на мои комментарии по e-mail”

  7. 37
    Алексей Шаров
    Алексей Шаров

    А можно как-нибудь разбить комментарии на 2 вида, скажем, позитивные и негативные, и пустить их в 2 потока?

  8. Думаю плагин был бы полезнее

    Чем же?? Тормозами при подзагрузке?? Выносить 20 строк кода в отдельный плагин как то глупо выглядит ИМХО. А открыть function.php редактором и Ctrl+C - Ctrl+V неужели так тяжело сделать?? =)

    А можно как-нибудь разбить комментарии на 2 вида, скажем, позитивные и негативные, и пустить их в 2 потока?

    Как вы себе интересно это представляете?? О_О
    Я так понимаю, если древовидные комментарии отключены то скрипт становится бесполезен (ну за исключением наличия прямой ссылки)?? И еще, не знаете, будет ли он корректно работать с Comment Referrers (плагин\скрипт показывающий откуда пришел на страницу пользователь)??
    А сайт в ссылке первого комментатора и правда жесть. Аж не ожидал =)))

    @
  9. Итересно)) Реализую у себя!

  10. Здравствуйте! Скажите пожалуйста, извиняюсь что не в тему, а у Ваших комментариев кнопка ответить - это стандартная или плагин какой то для древовидных комментариев? Не подскажите?

    @
  11. И не стандартная, и не плагин. Писал под себя скрипт.

  12. А у Вас на блоге не специальной статьи посвященной этому решению? Я заметил что ссылка ответить не содержит replytocom, с которой у меня постоянные проблемы…

    @
  13. Нет, я об этом не писал. На этом блоге стоит WordPress 2.3, поэтому пришлось писать скрипт для древовидных комментариев. А в тех версиях WP, где древовидные поддерживаются стандартно, я никаких проблем не испытывал. Странно, что у вас они есть.

  14. Хорошо, спасибо за столь быстрые ответы!

    @
  15. Дак а куда именно вставлять код.Куда именно-имеется ввиду в начало,середину или в конец php файла?Я поставил в конец и уменя ничего не изменилось.Помоему этот код хрень полная

    @
  16. Если хрень, зачем тогда спрашиваешь?

  17. Скажите, пожалуйста, как возможно настроить ответ на оповещение о необходимости модерации коммента прямо автору коммента, а не wordpress@domain.ru? Заранее спасибо вам!

    @

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.
  5. Комментарии не по теме удаляются.

Подписаться, не комментируя
  • Похожие статьи
  • Предыдущие из рубрики