понедельник, 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 комментирует...

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