В этой статье будет поднят вопрос организации голосования и опросов на WordPress сайте . Делать это будем с помощью плагина, о котором речь пойдет чуть ниже. Сейчас же небольшое вступление, в котором постараюсь изложить некоторые мысли, почему не стоит пренебрегать таким инструментом как опросник?
Ну что же, целесообразность использования опросников на сайте рассмотрели, приступим к обзору плагина для создания опросов и голосований в WordPress :
WP-Polls – один из самых популярных плагинов для создания голосования в WP. Об этом говорят нам и его рейтинги, и количество его скачиваний, которое на данный момент составляет более 1.5 млн.
Первая проблема, которая возникнет после активации - плагин на английском языке. Для кого-то это конечно не проблема, но большинство пользователей испытывают определенные трудности и неудобства при работе с англоязычными плагинами.
Проблема достаточно просто решается. Необходимо скачать 2 файла русской локализации и запихнуть в корневую папку плагина, которая расположена тут: сайт\wp-content\plugins\wp-polls
Сами файлы с переводом качаем отсюда:
Для локализации плагина на другие языки можно воспользоваться страничкой: https://plugins.trac.wordpress.org/browser/wp-polls/i18n/ , на которой собраны все доступные переводы.
Если вдруг какое-то слово не переведено, а такие встречаться будут, то советую использовать плагин CodeStyling Localization, о котором я уже писал в статье про перевод темы на русский .
Переходим в консоль WordPress и находим раздел плагина WP-Polls.
В шаблонах голосования можно более детально настроить отображение формы опросов (имеется в виду не дизайн, а текстовая составляющая.) Однако, прежде чем редактировать шаблоны, нужно как следует ознакомиться с правилами использования переменных в этом плагине и иметь хотя бы базовые знания использования синтаксиса HTML.Тут же можно осуществить перевод.
Скриншоты настроек делать не стал, там все и так понятно.
Вставить опрос или голосование, созданное с помощью WP-Polls на сайт, можно либо в разделе виджетов, либо в разделе добавления поста/страницы. В текстовом редакторе появится новая кнопка insert poll, нажав которую необходимо будет ввести id опроса. Id – номер.
Плагин позволяет создавать на сайте опросы, с возможностью пользователям добавлять варианты ответов. Одна из главных фишек плагина - это умение работать с плагинами страничного кэширования (например WP Super Cache).
Что касается сравнения этого плагина с аналогами. Но насчет известного wp-polls все же скажу: оба плагина очень похожи, функционал во много похож, я даже удивился когда начал сравнивать. Но, по моему, этот плагин лучше, потому что удобнее, пользователи могут добавлять свои ответы, работает с кэшем. Однако в моем плагине нет такой гибкой настройки шаблона опроса, а есть 3 темы оформления и возможность изменять дописывать свои css стили. Изменив стили, можно полностью изменить внешний вид опроса.
Но как говорил Идиот (Достоевского), - «Говорить нехорошо, лучше пример»:
Если вам нужны какие либо дополнительные возможности, голосуйте/добавляйте их в конце этой статьи, в опросе.
Создавать опросы и настраивать плагин можно в меню: Настройки > Опрос Democracy. Или через Панель инструментов WordPress. Меню в панели можно отключить в настройках:
Для вставки опроса на сайт используйте виджет. Если виджет не нужен и он мешает, его можно отключить в настройках.
Также опросы можно вставлять отдельно в записи (посты) для этого используйте шоткод [ democracy id=""] . Для удобной вставки шоткодов, плагин добавляет кнопку в визуальный редактор. Кнопку можно отключить в настройках:
Чтобы вывести архив опросов используйте шоткод (удалите пробел в начале шорткода, он есть чтобы тут не обрабатывался шорткод). Обычно создавать архив отдельно не нужно, для этого на странице настроек есть специальная кнопка. Она ищет существующую страницу, если не найдено, то создает новую постоянную страницу с нужным шоткодом.
С версии 5.5.6, в шоткод можно передавать параметры. Например можно вывести все активные опросы так:
Параметры которые можно передать в шорткод:
"before_title" => "", // for single poll title "after_title" => "", // for single poll title "active" => null, // 1 (active), 0 (not active) or null (param not set). "open" => null, // 1 (opened), 0 (closed) or null (param not set) polls. "screen" => "voted", // vote, voted "per_page" => 10, // limit. 0 or -1 - no limit "add_from_posts" => true, // add From posts: html block
Для вывода опросов и архива опросов через код, в плагине есть специальные функции-обертки:
Выводит на экран отдельный опрос по переданному id опроса. Если id не передать, то будет выведен один из активных опросов, в случайном порядке. Чтобы получить результат этой функции для обработки используйте get_democracy_poll() .
Выводит на экран архив опросов. Параметр $hide_active отвечает за показ активных опросов. Если установить его в true, все активные опросы (которые участвуют в ротации) будут удалены их вывода. Чтобы получить результат функции, а не выводить его на экран используйте get_democracy_archives() .
Код этих функций:
###### функции обертки ###### /** * Для вывода отдельного опроса * @param int $id ID опроса * @return HTML */ function democracy_poll($id = 0, $before_title = "", $after_title = ""){ echo get_democracy_poll($id, $before_title, $after_title); } function get_democracy_poll($id = 0, $before_title = "", $after_title = ""){ // die($before_title . $after_title); $poll = new DemPoll($id); $show_results = __query_poll_screen_choose($poll); return $poll->display($show_results, $before_title, $after_title); } /** * Для вывода архивов * @param bool $hide_active Не показывать активные опросы? * @return HTML */ function democracy_archives($hide_active = false, $before_title = "", $after_title = ""){ echo get_democracy_archives($hide_active, $before_title, $after_title); } function get_democracy_archives($hide_active = false, $before_title = "", $after_title = ""){ global $wpdb; $WHERE = $hide_active ? "WHERE active = 0" : ""; $ids = $wpdb->get_col("SELECT id FROM $wpdb->democracy_q $WHERE ORDER BY active DESC, id DESC"); $output = "
Выведет опрос с ID 25 и обвернет заголовок опроса в
Выведем список всех неактивных опросов и обернем их заголовки в тег :
", ""); ?>
Получает список опросов по указанным параметрам.
$args = array("wrap" => "
Один из примеров расширения функционала плагина при помощи имеющихся хуков, описан в вопросе .
Удалять плагин нужно из панели плагинов WordPress, чтобы он вместе с файлами удалил данные о себе в базе данных.
Нельзя удалять папку плагина через FTP (это относится ко всем плагинам WP)! Так как плагин создает дополнительные таблицы в Базе Данных и сохраняет настройки. Если удалить плагин просто удалив его папку из каталога плагинов, то плагин не почистит за собой.
Несколько слов о том, как Democracy работает с плагинами кэширования и почему это важно.
Democracy я использую на многих сайтах. И на них часто установлен страничных кэш (WP Super Cache). Однако после очередного обновления Democracy я понял, что опрос-то не умеет работать с кэшем.
В чем проблема? Поясню на примере: зашел посетитель на страницу сайта где выводится опрос за который он уже голосовал, ему вывело результаты опроса помеченные его голосами и такая страница сохранилась в кэш. Далее на эту же страницу заходит другой посетитель, который не голосовал и видит сохраненную в кэше страницу, где выводятся результаты голосования прежнего посетителя, но ведь второй посетитель еще не голосовал. Вот и получается, что если вы используете кэширование на сайте (а в WordPress оно бывает очень нужно), то опрос попросту не работает!
Посмотрел я имеющиеся в каталоге WP плагины опросов, среди которых и популярный WP-Polls и не нашел ни одного плагина, который бы работал с кэшем!
Разумеется меня это все не устроило и я активно занялся доработкой Democracy. Чтобы он умел работать с плагинами страничного кэширования! Я думал сделать это будет проще, гораздо проще, чем оказалось на деле. Работы получилось много, много время ушло на тестирование.
С версии 4.5.6, Democracy работает с кэшем!
Замечу еще, что логику работы с кэшем можно организовать по-разному. Самый простой и очень нехороший вариант - это когда плагин добавляет скрипт, который при загрузке кэшированной страницы, отправляет AJAX запрос, в котором проверяет голосовал ли пользователь и если нужно заменяет данные опроса на полученные. С таким подходом все ускорение и снижение нагрузки, которое должно работать при включенном кэше идет коту под хвост... Например, так работает плагин wp-postviews: страница отдается из кэша, практически без нагрузки на сервер и тут же AJAX запрос подгружает WordPress фоном и нагрузка на сервер, чуть ли не такая же как была без плагина кэширования.
Democracy poll работает по другому принципу и не "аннулирует" работу плагина кэширования.
Логика работы Democracy с кэшем такая: Проверяется установлен ли один из плагинов кэширования и включен ли в нем страничный кэш, если кэш активен, то под каждый опрос на странице в тегах noindex подгружаются html коды голосования и результатов. Далее, при загрузке страницы, скрипт проверяет установлены ли куки голосования для пользователя:
если - да, то скрипт берет html результатов и ставит их в опрос и вы видите результаты, независимо от того что там сохранилось в кэше,
если - нет, то скрипт заменят опрос на вид голосования и не голосовавший пользователь может голосовать.
Но тут нужно еще проверить: куков может не быть в браузере, но в логах, в БД могут быть данные о том, что посетитель с таким же IP или пользователь с таким же ID уже голосовал. Получается совсем без AJAX запроса не обойтись, а на сервер нагружать не хочется - кэш все-таки... Поэтому: AJAX запрос на проверку данных в БД отправляется, не при загрузке страницы, а когда посетитель наведет мышку на опрос и удержит её там больше секунды (сигнал, что он хочет голосовать) или кликнет по блоку опроса (в любое место, для тачскринов).
Poll Options are limited because JavaScript is disabled in your browser.
Предложения из опроса, которые уже внесены в плагин (чтобы не мешались в опросе):
- При выборе возможности выбора несколько вариантов ответа нужно добавить максимальное количество выбранных вариантов к примеру 3 варианта но можно выбрать только 2 (21 голос)
- Дату окончания опроса (71 голос)
- Множественное голосование (несколько вариантов ответов) (61 голос)
- Для голосования, пользователь должен зарегаться. Контроль вести по пользователю WP. (13 голосов)
- Возможность рандомайза опросов из НЕСКОЛЬКИХ активных (18)
- Простой способ вставки опросов. (20)
- Возможность редактировать количество голосов (16)
- Кнопку переголосовать! (9)
- Добавить возможность вручную устанавливать порядок ответов. А то сейчас только по количеству голосов и по порядку добавления. (17)
- Выбор категории пользователей, которые могут управлять опросами (Админ, модер,участник и т.д.) (19)
- Отключать вывод результатов опроса (22)
- Пагинацию в Админке (9)
Отличный плагин! Спасибо! * 24%, 150 голосов
Несколько вопросов в опросе * 9%, 53 голоса
Возможность создавать группы опросов и результат по ним (набор баллов) 4%, 26 голосов
Ничего. Не надо перегружать, функционалом! 4%, 23 голоса
Настройка шаблонов опросов. Как в WP-Polls, чтобы сам мог указать html теги, классы 3%, 19 голосов
Добавить статистику, чтобы можно было работать с участниками голосования. * 3%, 18 голосов
Добавить поля: имя, e-mail. * 3%, 17 голосов
Убрать мусор из исходного кода - все стили вынести в файл * 3%, 16 голосов
Тест добавления ответа * 2%, 15 голосов
Отправка результатов опроса на e-mail администратора или указать другой * 2%, 15 голосов
В логах очень неудобное отображение результатов для меня, как проводящего опрос. Сделайте в виде графиков для отдельного опроса или в виде голосов (например, возраст 25 лет - 10 голосов), а не 10 раз в логах прописано возраст 35 лет, просто замусоривание происходит. * 2%, 14 голосов
Добавить возможность поблагодарить за участие в опросе после голосования * 2%, 11 голосов
Кнопки bootstrap, foundation, kube * 2%, 10 голосов
Плагин позволяет создавать на сайте опросы, с возможностью пользователям добавлять варианты ответов. Одна из главных фишек плагина - это умение работать с плагинами страничного кэширования (например WP Super Cache).
Что касается сравнения этого плагина с аналогами. Но насчет известного wp-polls все же скажу: оба плагина очень похожи, функционал во много похож, я даже удивился когда начал сравнивать. Но, по моему, этот плагин лучше, потому что удобнее, пользователи могут добавлять свои ответы, работает с кэшем. Однако в моем плагине нет такой гибкой настройки шаблона опроса, а есть 3 темы оформления и возможность изменять дописывать свои css стили. Изменив стили, можно полностью изменить внешний вид опроса.
Но как говорил Идиот (Достоевского), - «Говорить нехорошо, лучше пример»:
Если вам нужны какие либо дополнительные возможности, голосуйте/добавляйте их в конце этой статьи, в опросе.
Создавать опросы и настраивать плагин можно в меню: Настройки > Опрос Democracy. Или через Панель инструментов WordPress. Меню в панели можно отключить в настройках:
Для вставки опроса на сайт используйте виджет. Если виджет не нужен и он мешает, его можно отключить в настройках.
Также опросы можно вставлять отдельно в записи (посты) для этого используйте шоткод [ democracy id=""] . Для удобной вставки шоткодов, плагин добавляет кнопку в визуальный редактор. Кнопку можно отключить в настройках:
Чтобы вывести архив опросов используйте шоткод (удалите пробел в начале шорткода, он есть чтобы тут не обрабатывался шорткод). Обычно создавать архив отдельно не нужно, для этого на странице настроек есть специальная кнопка. Она ищет существующую страницу, если не найдено, то создает новую постоянную страницу с нужным шоткодом.
С версии 5.5.6, в шоткод можно передавать параметры. Например можно вывести все активные опросы так:
Параметры которые можно передать в шорткод:
"before_title" => "", // for single poll title "after_title" => "", // for single poll title "active" => null, // 1 (active), 0 (not active) or null (param not set). "open" => null, // 1 (opened), 0 (closed) or null (param not set) polls. "screen" => "voted", // vote, voted "per_page" => 10, // limit. 0 or -1 - no limit "add_from_posts" => true, // add From posts: html block
Для вывода опросов и архива опросов через код, в плагине есть специальные функции-обертки:
Выводит на экран отдельный опрос по переданному id опроса. Если id не передать, то будет выведен один из активных опросов, в случайном порядке. Чтобы получить результат этой функции для обработки используйте get_democracy_poll() .
Выводит на экран архив опросов. Параметр $hide_active отвечает за показ активных опросов. Если установить его в true, все активные опросы (которые участвуют в ротации) будут удалены их вывода. Чтобы получить результат функции, а не выводить его на экран используйте get_democracy_archives() .
Код этих функций:
###### функции обертки ###### /** * Для вывода отдельного опроса * @param int $id ID опроса * @return HTML */ function democracy_poll($id = 0, $before_title = "", $after_title = ""){ echo get_democracy_poll($id, $before_title, $after_title); } function get_democracy_poll($id = 0, $before_title = "", $after_title = ""){ // die($before_title . $after_title); $poll = new DemPoll($id); $show_results = __query_poll_screen_choose($poll); return $poll->display($show_results, $before_title, $after_title); } /** * Для вывода архивов * @param bool $hide_active Не показывать активные опросы? * @return HTML */ function democracy_archives($hide_active = false, $before_title = "", $after_title = ""){ echo get_democracy_archives($hide_active, $before_title, $after_title); } function get_democracy_archives($hide_active = false, $before_title = "", $after_title = ""){ global $wpdb; $WHERE = $hide_active ? "WHERE active = 0" : ""; $ids = $wpdb->get_col("SELECT id FROM $wpdb->democracy_q $WHERE ORDER BY active DESC, id DESC"); $output = "
Выведет опрос с ID 25 и обвернет заголовок опроса в
Выведем список всех неактивных опросов и обернем их заголовки в тег :
", ""); ?>
Получает список опросов по указанным параметрам.
$args = array("wrap" => "
Один из примеров расширения функционала плагина при помощи имеющихся хуков, описан в вопросе .
Удалять плагин нужно из панели плагинов WordPress, чтобы он вместе с файлами удалил данные о себе в базе данных.
Нельзя удалять папку плагина через FTP (это относится ко всем плагинам WP)! Так как плагин создает дополнительные таблицы в Базе Данных и сохраняет настройки. Если удалить плагин просто удалив его папку из каталога плагинов, то плагин не почистит за собой.
Несколько слов о том, как Democracy работает с плагинами кэширования и почему это важно.
Democracy я использую на многих сайтах. И на них часто установлен страничных кэш (WP Super Cache). Однако после очередного обновления Democracy я понял, что опрос-то не умеет работать с кэшем.
В чем проблема? Поясню на примере: зашел посетитель на страницу сайта где выводится опрос за который он уже голосовал, ему вывело результаты опроса помеченные его голосами и такая страница сохранилась в кэш. Далее на эту же страницу заходит другой посетитель, который не голосовал и видит сохраненную в кэше страницу, где выводятся результаты голосования прежнего посетителя, но ведь второй посетитель еще не голосовал. Вот и получается, что если вы используете кэширование на сайте (а в WordPress оно бывает очень нужно), то опрос попросту не работает!
Посмотрел я имеющиеся в каталоге WP плагины опросов, среди которых и популярный WP-Polls и не нашел ни одного плагина, который бы работал с кэшем!
Разумеется меня это все не устроило и я активно занялся доработкой Democracy. Чтобы он умел работать с плагинами страничного кэширования! Я думал сделать это будет проще, гораздо проще, чем оказалось на деле. Работы получилось много, много время ушло на тестирование.
С версии 4.5.6, Democracy работает с кэшем!
Замечу еще, что логику работы с кэшем можно организовать по-разному. Самый простой и очень нехороший вариант - это когда плагин добавляет скрипт, который при загрузке кэшированной страницы, отправляет AJAX запрос, в котором проверяет голосовал ли пользователь и если нужно заменяет данные опроса на полученные. С таким подходом все ускорение и снижение нагрузки, которое должно работать при включенном кэше идет коту под хвост... Например, так работает плагин wp-postviews: страница отдается из кэша, практически без нагрузки на сервер и тут же AJAX запрос подгружает WordPress фоном и нагрузка на сервер, чуть ли не такая же как была без плагина кэширования.
Democracy poll работает по другому принципу и не "аннулирует" работу плагина кэширования.
Логика работы Democracy с кэшем такая: Проверяется установлен ли один из плагинов кэширования и включен ли в нем страничный кэш, если кэш активен, то под каждый опрос на странице в тегах noindex подгружаются html коды голосования и результатов. Далее, при загрузке страницы, скрипт проверяет установлены ли куки голосования для пользователя:
если - да, то скрипт берет html результатов и ставит их в опрос и вы видите результаты, независимо от того что там сохранилось в кэше,
если - нет, то скрипт заменят опрос на вид голосования и не голосовавший пользователь может голосовать.
Но тут нужно еще проверить: куков может не быть в браузере, но в логах, в БД могут быть данные о том, что посетитель с таким же IP или пользователь с таким же ID уже голосовал. Получается совсем без AJAX запроса не обойтись, а на сервер нагружать не хочется - кэш все-таки... Поэтому: AJAX запрос на проверку данных в БД отправляется, не при загрузке страницы, а когда посетитель наведет мышку на опрос и удержит её там больше секунды (сигнал, что он хочет голосовать) или кликнет по блоку опроса (в любое место, для тачскринов).
Poll Options are limited because JavaScript is disabled in your browser.
Предложения из опроса, которые уже внесены в плагин (чтобы не мешались в опросе):
- При выборе возможности выбора несколько вариантов ответа нужно добавить максимальное количество выбранных вариантов к примеру 3 варианта но можно выбрать только 2 (21 голос)
- Дату окончания опроса (71 голос)
- Множественное голосование (несколько вариантов ответов) (61 голос)
- Для голосования, пользователь должен зарегаться. Контроль вести по пользователю WP. (13 голосов)
- Возможность рандомайза опросов из НЕСКОЛЬКИХ активных (18)
- Простой способ вставки опросов. (20)
- Возможность редактировать количество голосов (16)
- Кнопку переголосовать! (9)
- Добавить возможность вручную устанавливать порядок ответов. А то сейчас только по количеству голосов и по порядку добавления. (17)
- Выбор категории пользователей, которые могут управлять опросами (Админ, модер,участник и т.д.) (19)
- Отключать вывод результатов опроса (22)
- Пагинацию в Админке (9)
Отличный плагин! Спасибо! * 24%, 150 голосов
Несколько вопросов в опросе * 9%, 53 голоса
Возможность создавать группы опросов и результат по ним (набор баллов) 4%, 26 голосов
Ничего. Не надо перегружать, функционалом! 4%, 23 голоса
Настройка шаблонов опросов. Как в WP-Polls, чтобы сам мог указать html теги, классы 3%, 19 голосов
Добавить статистику, чтобы можно было работать с участниками голосования. * 3%, 18 голосов
Добавить поля: имя, e-mail. * 3%, 17 голосов
Убрать мусор из исходного кода - все стили вынести в файл * 3%, 16 голосов
Тест добавления ответа * 2%, 15 голосов
Отправка результатов опроса на e-mail администратора или указать другой * 2%, 15 голосов
В логах очень неудобное отображение результатов для меня, как проводящего опрос. Сделайте в виде графиков для отдельного опроса или в виде голосов (например, возраст 25 лет - 10 голосов), а не 10 раз в логах прописано возраст 35 лет, просто замусоривание происходит. * 2%, 14 голосов
Добавить возможность поблагодарить за участие в опросе после голосования * 2%, 11 голосов
Кнопки bootstrap, foundation, kube * 2%, 10 голосов
Проведение опросов на сайтах встречается крайне нередко. Это может оказаться весьма полезным инструментом для оценки или понимания общего мнения в каких-либо затруднительных ситуациях. Или просто провести опрос либо голосование в статье, которая посвящена определенной теме, где хотелось бы услышать точку зрения других людей. В общем, применение такого инструмента не ограничивается строгими правилами.
Мы рассмотрим пять плагинов с разным подходом к тому, как давать возможность пользователям проголосовать, выбрав один из предложенных ответов.
Отличный многофункциональный плагин с полной настройкой всех полей опроса. Заранее можно сформировать шаблон для каждого состояния голосования. То есть то, что показывать при просмотре результатов голосования. Присутствуют параметры сортировки ответов, определение, кому именно разрешено голосовать, отслеживание по IP, cookie и т.д.
Данный плагин позволяет легко интегрировать опрос на ваш сайт с большим количеством полезных параметров. В настройку входит автоматическая установка начала и окончания опроса, возможность задавать как один, так и несколько ответов, функция ограничения голосования по IP, cookies. Также возможно организовывать сразу несколько опросов, имеется виджет для показа в сайдбаре.
Весьма интересная форма голосования, имеющая вид разноцветных горизонтальных блоков. Каждому ответу присваивается определенный цвет. Общий результат формируется таким же образом. Кроме вопросов и ответов, можно выводить название и описание опроса, если в этом есть необходимость.
Плагин представляет из себя выезжающий в нижней части сайта виджет с формой голосования. К тексту ответов можно добавлять изображения, к примеру, звездочки, или использовать изначально присутствующие смайлики. Отслеживание голосов ведется через IP. Другого варианта нет.
I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.
«WP-Polls» - проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участникиnanbaby.ru - Здоровье и красота. Мода. Дети и родители. Досуг. Быт. Дом