понеділок, 9 травня 2011 р.

О чём шепчут администраторам? WP Whisper 1.0

Во первых, поздравляю всех с великим праздником - с Днём Победы! Для нас этот день уникален тем, что это трагичный и скорбный, но в то же время светлый праздник. Спасибо нашим дедушкам и бабушкам, героям ВОВ!

Теперь ближе к теме. Ты сталкивался когда-нибудь с комментариями, в которых основной смысл ограничивается упрёком автору в его орфографии или грамматике? Или вот пишешь ты коммент, долго пишешь, умный-заумный такой комментарий, чуть ли не на тома разбивать нужно. Потом отправляешь, не глядя... И уже сохраненное на сервере сообщение перечитываешь и понимаешь, что припустился ошибки или досадной опечатки. Бывало? И что тогда? Конечно проще забить, но я иногда, в особо нечитабельных случаях, пишу следующий комментарий, мол "автор, исправь то-то там-то, а этот коммент удали". А автора и след простыл. И висят оба коммента месяцами. А люди читают, спотыкаются: один коммент непонятен, другой - вовсе не информативный...

И тут приходит такой Kichrum и говорит: "Ребята! Ставьте в свои блоги мой плагин - и жить станет лучше!" В этой статье мы вместе напишем плагин для WordPress, обеспечивающий прямую связь с автором прямо через комментарии.

Вчера ночью Тормоз написал у себя в блоге об идее: что если к форме добавления комментария прикрутить флажок "только для автора"? И пусть такой комментарий, адресованный персонально автору, не мозолит глаза обычным читателям, а доставляется строго "по адресу". Ведь это решит сразу все перечисленные выше проблемы.

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

Заморачиваться с отправкой мыла через плагин я не стал. Всё же стоит отделять мух от котлет: пусть форма обратной связи тихонько выполняет свои функции, ну а встроенная система комментирования - свои. Что есть в комментариях WordPress, но далеко не всегда используется блогерами? Премодерация! Более того, я очень не уважаю сайты, у которых все комментарии проходят модерацию перед публикацией. Надеюсь, своим плагином я ещё и увеличу количество блогеров, отказавшихся от премодерации всех комментариев.

Так вот, я решил, что достаточно было бы в WordPress комментарии "персонально администратору" отправлять просто на жесткую премодерацию (естественно, администратор не должен такие комментарии аппрувить, ведь они не для этого предназначаются).

Сложней всего было разобраться с формой отправки комментария. Идеальный вариант был бы, если галочка "только автору" будет появляться примерно непосредственно перед кнопкой отправки комментария. Но в моей доисторической версии шаблона, который переделывать мне не хочется вот уже несколько лет, всех таких прелестей жизни нет. Иначе идеально подошел бы вариант работы с $args['comment_notes_after'], но я решил не искать легких путей, извратиться и воспользоваться тем, что есть. Перехватил действие comment_form. Вписал в него следующее:
echo "\n"
. '<p class="only_author_flag">' // Стиль для абзаца с флажком - p.only_author_flag - можно настроить через style.css
. '<input id="only_author_flag" type="checkbox" name="only_author_flag" value="true" />' // id флажка также #only_author_flag
. '<label for="only_author_flag" title="'
// Текст, отображаемый при наведении курсора на описание к флажку:
. 'Например, если в комментарии содержится указание на ошибку в тексте или просьба исправить предыдущий комментарий... Обратная связь в общем'
. '">'
// Текст описания флажка:
. 'Обращение к автору блога (не публиковать для всех)'
. '</label>'
. '</p>';

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

Далее нам необходимо профильтровать комментарии, отправленные с установленным флажком и без такового. В листинге выше указано name="only_author_flag" и value="true", значит, будем работать с элементом $_POST['only_author_flag'], и в нем хранится true, если галочка стоит.

Возьмем сначала фильтр preprocess_comment($commentdata) и допишем к тексту отмеченного комментария примечание, что он действительно отправлен на жесткую премодерацию (а не по решению движка или антиспам-фильтров):
if($_POST['only_author_flag'] == 'true')
$commentdata['comment_content'] =
// Комментарии автору будут помечаться этим текстом:
"<blockquote>[Комментарий доступен только автору блога]</blockquote>\n" // (Выглядит как цитата)
. $commentdata['comment_content'];
return $commentdata;

Так мы "отделили" обычную премодерацию от "обратной связи". Затем отфильтруем на спам, повторы, лишние ссылки и т.д. и в последнюю очередь проверим через фильтр pre_comment_approved($approved), не установлен ли флаг. Если установлен, присваиваем ему статус "hold" (или просто нолик). Если нет - возвращаем статус, полученный проверками, произведенными ранее (в т.ч. антиспамами и другими плагинами).
if($_POST['only_author_flag'] == 'true')
return 0; // Строгая отправка комментария на модерацию
else
return $approved; // Сохранение комментария по правилам антиспамов и прочих встроенных систем

Вот такой простенький, но полезный плагин у нас получился (надо еще правда разбросать по функциям и присвоить их к фильтрам и действию). Посмотреть на флажок в работе можно прямо тут. Скачать готовый плагин WP Whisper можно здесь.

Это уже второй мой плагин. Первый, магазин свободных цен для WordPress, не вызвал шквал пользователей и разочаровал меня. Возможно, это из-за A1Pay, который в последствии очень подвел своим неадекватным поведением. Но на тот плагин я потратил больше времени и сил. На второй уже сильно не напрягался вовсе. "KISS" типа, ага. ;)

Если тебе понравилась статья, можешь поблагодарить, купив ВП Шепот по свободной цене.

P. S. Пару слов об изменениях на блоге. Лента влюбленных удалена по просьбам трудящихся, для разгрузки священной коровы пользователей Windows. Такая фича моего блога, как  "Пишут обо мне", тоже не прижилась: никто из влиятельных людей (способных повлиять хотя бы на результаты поиска Google) не напрягался со ссылкой на меня. Остальные же старались напрасно. Скоро буду менять потихоньку политику блога, пожалуй...

50 коментарів:

Fallen_Angel сказав...

Отличная идея с флажком. Нужно будет попробовать

Сергей сказав...

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

ponk сказав...

Согласен, идея хорошая, у меня блог есть на вордпресс, но сейчас сделал на Макс сайт - в нем все проще.

BiololG сказав...

Прямо как у классиков: бабе - цветы, дитям - мороженое. Публике - публичное, автору - авторское))) И код легкий получился))

BiololG сказав...

Но вот смотрю я на форму коммента - и понимаю, что лучше, если галочка "Автору" будет НАД кнопкой Запостить

Fallen_Angel сказав...

Вот кстати предыдущий оратор прав про разместить флажок над кнопкой. Мне кажется можно не заметить это галочку просто, и не знать о ее существовании долгое время.

Kichrum сказав...

BiololG, Fallen_Angel, отвращение только вызывают комментаторы, которые не читают статью перед тем, как комментировать. Стыдно должно быть, ребята. Абзац №8 для вас.

Vadim сказав...

А если на блоге и так стоит премодерация, то толку всё же никакого в плагине нет?

Yakusikul сказав...

с флажком будет лучше 100%

Video_56 сказав...

Для борьбы с опечатками на своем сайте я пользуюсь скриптом Orphus. (orphus.ru/ru/). Очень удобно!

Kichrum сказав...

А я тупо не борюсь с опечатками. Бессмысленно, особенно для такого блога как мой. У плагина есть и другие преимущества.

Сергей сказав...

Опичатки повсемесно, не только в коментах, но и в статьях, проверяешь по несколько раз, а потом всеровно их находиш,наверное это проблема слишком быстрого чтения;)

Alina сказав...

На счёт плагина, особой надобности в таком не вижу, помоему обратной связи вполне достаточно.
А с очепятками у меня отлично chrome справляеться.

tipok сказав...

да я на некоторых сайтах встречался с подобной системой.
если вслед за неудачным словом отрпавить еще один коммент в таком формате:
*неудачное слово
то первый коммент исправится)

Kichrum сказав...

Хм... Интересно, tipok, можно и такое реализовать в принципе...

Dmitry сказав...

А что транчляция с твиттера так грузит систему?

Николай сказав...

Задумка неплохая. И отпадает необходимость в форме обратной связи.

CLASSIK сказав...

Трансляция твиттера вроде не может систему грузить, я проконсультируюсь, опишу.

Kichrum сказав...

Чозанах, какая наф трансляция? Статья не об этом. А об этом - почитайте коммент под ссылкой в пост скриптуме.

obrok сказав...

чаще эти ошибки незаметны, комментарий все равно остается читаемым, но это уже кто как захочет:)

Anatoly сказав...

Не знаю, много ли будет писаться комментов "для админа"

Андрей сказав...

Неплохая идея с плагином!!! Тоже хочу свой полноценный блог завести, как соберусь, может и воспользуюсь!!!

Katya сказав...

Ну как идут сообщения для админа?

campeguk сказав...

Cколько будут писать админу- покажет практика! Пока не попробуешь то и не узнаешь.

Montenegro сказав...

я думаю из-за опечатки никто не будет отсылать отдельное сообщение.

Kichrum сказав...

я буду...

PaR сказав...

Прямо как у классиков: бабе – цветы, дитям – мороженое. Публике – публичное, автору – авторское))) И код легкий получился))

anadonam сказав...

Ох как вы ошибаетесь в ошибках есть своя изюминка - некоторые специально пишут с ошибками... чтобы была хоть какая то индивидуальность - это же интернет а не школа в конце концов

Kichrum сказав...

Да, anadonam, я так тоже думал, пока не научился писать грамотно. Это основная отмазка у всей школоты, так что всё ок ;)

Хайпер сказав...

Думаю, для таких целей лучше использовать плагин, позволяющий редактировать комментарии их авторам после отправки.
Но идея использовать как-то предварительную модерацию интересна. Надо как-то приспособить такую фичу

Kichrum сказав...

Хайпер, то, что ты написал, - лишь одно из множества применений данного плагина. Я назвал его лишь для примера.

lihach-abinsk сказав...

Та я ваще ваще люблю с ошибками писать, а точнее сказать в основном это не ошибки а акцент, типа разговорный, как говорю так и пишу. Целых 11 школьных лет меня заставляли писать грамотно, но теперь всё, отстаньте, как хочу так и пишу, бе

Алексей сказав...

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

Максим сказав...

Спасибо большое за плагин! На самом деле порой что-то такое и требуется, а где найти не знаешь. Сохраню себе на всякий случай.)

Давид сказав...

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

Alex сказав...

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

geoby сказав...

флажок “только для автора” - идея зачетная! Попробую реализовать на своем блоге. Спасибо за решение проблемы!

Roman сказав...

В ощибках чувствуется своя индивидуальность. Наверно и пишут так поэтому.

Николай сказав...

А Вы не пробовали разработчикам WP отправить идейку? Кардинальная же, её нужно в релиз ставить.

Kichrum сказав...

бред, конечно, как для идеи в релиз =)

Sam сказав...

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

peshehod сказав...

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

Дмитрий сказав...

Всё простое гениально, надо будет взять на заметку и опробовать флажок.

FashionMan сказав...

Классный плагин, это что то новое - общение через комменты на прямую.

Radion сказав...

Я тоже думаю что орфус пока лидирует по этой теме.

Sandro сказав...

Опечатки - это вполне нормальное явление. Они не свидетельствуют о безграмотности. Более того, некоторые их специально делают. Так что если суть поста не теряется, то и зацикливаться на очепятках не стоит.

Дмитрий сказав...

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

MIKL сказав...

Товарищи, всегда проверяйте орфографию!!! Я однажды начальнику написал вместо давно=гавно. Было очень печально =(

Александр сказав...

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

FashionLady сказав...

А зачем искать в комментах ошибки??