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

Начал было рассказывать о своей беде товарищу в скайпе, но вдруг понял, что всё не так сложно, как почудилось.
На самом деле достаточно сделать всего пару изменений в одном из файлов шаблона. Откроем comments.php и найдём примерно следующее (примерно, потому что в разных темах по-разному, мой вариант взят из темы Classic):
<br />
<input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" /><br />
<label for="author"><small><?php _e('Name'); ?> <?php if ($req) _e('(required)'); ?></small></label></p>
<p>
Удалим отсюда теги label и всё, что между ними, уберём оба тега p, значение value заменим на Анонимный комментарий, а значение type — на hidden.
В результате получим следующий код:
<br />
<input type="hidden" name="author" id="author" value="Анонимный комментарий" size="22" tabindex="1" />
Сделаем похожие изменения в поле для ввода E-mail, заменим
<br />
<input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" /><br />
<label for="email"><small><?php _e('Mail (will not be published)');?> <?php if ($req) _e('(required)'); ?></small></label></p>
<p>
на этот код:
<br />
<input type="hidden" name="email" id="email" value="noreplay@site.com" size="22" tabindex="2" />
Поле для ввода адреса сайта можем смело удалить, вот каким оно было:
<br />
<input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /><br />
<label for="url"><small><?php _e('Website'); ?></small></label></p>
<p>
Проверяем результат.

Вот такое нехитрое решение оригинальной проблемы.
Для того, чтобы задизайнить в стиле сайта страницы регистрации, авторизации, настройки профиля и напоминания пароля, я использовал плагин Theme my Login, о котором писал в уроке «Подключение темы Wordpress к страницам профиля, регистрации и авторизации» (с тех пор настройки плагина немножко поменялись, имейте в виду).
Желаю вам всего самого оригинального.
Артём Савельев
P.S. Скоро подходит к концу мой марафон. Будем отчитываться =)


Пассивный доход
Пассивный доход
Размещение ссылок
Размещение статей
Размещение ссылок
Размещение ссылок
Ссылки
Ссылки
Быстрые ссылки
Ссылки и статьи
А зачем это вообще нужно? Не легче ли поставить модерацию комментариев?
Ответить
@Денис, возможно беспощадный анонимус будет выдавать жесточайшую критику
Ответить
Было бы неплохо тогда, что бы ip анонимного комментатора записывалось в бд и потом можно было блочить если оборзеют )
Ответить
э-э-э!
а развернутый пост по результатам марафона будет?? отрицательный результат — это тоже результат! тем более что работы ведутся на сайтиками правильно же?
Мы хотим знать, почему все так получилось как получилось, на что были сделаны ошибочные ставки и еще много другой полезной информации
Ответить
@Uran, всё будет в понедельник—вторник =) на данный момент результат не результат, но марафон будет продолжен с плюшками на его исходе для читателей блога =)
Ответить
Да, в вордпресс подобная фича действительно довольно просто делается.
Ответить
Ну, а тогда зачем модерация сообщения для анонимных пользователей?
Ответить
В общем-то, алгоритм действительно несложен, но стоит ли оно того? Анон же может и обидеть, и написать чего-нить нехорошего. Придётся так или иначе модерировать, банить и прочие непопулярные меры принимать, ещё и некоторые вручную
Ответить
За способ — молодец. Но вот область применения? Честно не знаю.
Ответить
странное применение, а где же проверка на то, что это зарегистрированный юзер?
codex.wordpress.org/Funct...s_user_logged_in
зарегистрированному что будет выдаваться то? имхо надо
Ответить
порезал коммент
php
if ( is_user_logged_in () ) {
тут старый код который был в шаблоне
} else {
тут твой, с полями, которые ты сделал скрытыми(автор и емэйл)
};
Ответить
@Желнов Александр, зарегистрированному будет выдаваться то, что нужно вставить вместо фразы «тут старый код который был в шаблоне» — то есть буквально вставить старую форму добавления комментария, её он и получит в результате.
Ответить
@Артём Савельев, я сам уже запутался...
вообще сама идея автоматом добавлять комментарии без премодерации это жуть, там же заспамят все что можно... ты пишешь что удалять поле урл из формы, а ведь боты автоматом постят поле урл — есть оно в коде или нет... бот определил что вордпресс, и все постит... там надо убирать вывод урл, если нет юзера в базе т.е. для не зарегистрированных не выводить поле урл...
а тут надо смотреть несколько функций wp_list_comments
codex.wordpress.org/Funct...wp_list_comments использовать ее с параметрами wp_list_comments ('type=comment&callback=mytheme_comment')
в functions.php добавить функцию mytheme_comment
т.е. переписать ее под себя и возможно даже какие-то фильтры add_filter применять т.к. править функции самого движка такие как comment_author_link не стоит...
т.е. не все так просто...
или же очень жестко бороться со спамом используя и рекапчу и проверку на куки...
короче я такое не делал т.к. не требовалось никогда...
обычно просто пользователь постит и урл, но если спам то в спам и все...
Ответить