WP-Polls: Добавляем изображение и редирект на статью.

Данный плагин весьма популярен, он позволяет проводить опросы среди посетителей. Его функционал весьма не мал: можно вставить опрос как в запись, так и в сайдбар с помощью виджета или кода, большое количество настроек для отображения опросов на сайте, использование AJAX, можно задать дату начала и окончания опроса, возможность выбора более, чем одного ответа и прочее.

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

Для начала стоит разобраться как же устроена внутренняя механика wp-polls. Все данные плагин хранит в mysql в таблицах wp_pollsa, wp_pollsip и wp_pollsq. В wp_pollsa хранятся все ответы на наши опросы, в wp_pollsip статистика ответов, а в wp_pollsq сам опрос и его основные данные. Именно последняя таблица нам и нужна. Имена полей интуитивно понятны, поля для url и рисунка мы будем добавлять по параметрам анологичным полю pollq_question. В итоге должна получится картина такая:

Таблица wp_pollsq
Таблица wp_pollsq

В этих полях будут сохраняться наши данные. Следующий шаг - добавление в интерфейс настроек наших полей.

За опции отвечают  2 файла polls-add.php и polls-manager.php. Первый соответственно при добавлении запроса, а второй отвечает за редактирование уже существующих опросов. Начнем с добавления опроса. Добавим сами поля ввода после кода:

наш код:

Теперь необходимо, чтобы введенные нами данные сохранялись, ищем строчку $pollq_question = addslashes(trim($_POST['pollq_question'])); и вставляем после неё

Теперь после заполнения полей рисунка и ссылки, наши данные будут скохраняться в mysql. В данном случае используется стандартная функция для перемещения файлов, которая использует путь и имя выбранного изображения. Если вы хотите, чтобы имена файлов случайно не совпали при загрузке, то стоит вместо имени файла использовать случайный генератор или использовать хэш md5.

Следующее - нужно добавить возможность изменять и просматривать, вводимые нами данные, для этого будем править файл polls-manager.php. Здесь мы добавим поля для изменения, а так же не помешает дополнительно вывести то изображение, которое используется в данном опросе. Действия похожи на предыдущие, соответственно сперва добавляем нужные поля между комментариями и :

и соответственно не забываем про код, который должен извлекать нужные нам данные из базы, находим похожий и подставляем:

а затем добавляем код для сохранения изменённых данных:

Половина дела сделана, теперь осталось выводить эти данные как нам угодно. Для вывода опроса плагин использует шаблоны, которые можно изменять в админке (пункт Poll Templates). Данные подставляются наподобие %<текст>%. Для вывода изображения и урла мы сделаем такую же структура. За вывод опроса уже непосредственно на экран отвечает wp-polls.php. Заходим туда и ищем строчки наподобие:

Первые строчки отвечают за извлечение данных из БД. Последние - за подстановку в шаблон, взятый из админки, вместо тегов уже конкретных значений.
Теперь всё, прописываем в шаблоне как нам угодно выводить эти данные, например изменяем стандартную часть шаблона в "Voting Form Header", чтобы выводился текст опроса и изображение, заключённые в нашу ссылку:

Осталось разобраться только с редиректом, его мы тоже будем прописывать в шаблоне, используя возможности JS. В раздел "Voting Form Footer:" добавляем вместо onclick="poll_vote(%POLL_ID%);" - onclick="poll_vote(%POLL_ID%); justVoted = true;", проверяем эти данные в Result Footer (тот, который Displayed When The User HAS Voted):

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

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

Ну и приложу изменённые файлы, чтобы можно было разобраться наглядно: файлы. Так же пример работы можно посмотреть на сайте Jlady.ru в левом сайдбаре.

Одна мысль про “WP-Polls: Добавляем изображение и редирект на статью.”

  1. Для тех у кого не будут грузится файлы, то есть будет пустой массив $_FILES:

    в тэг заголовка формы голосования, добавьте enctype=multipart/form-data

    и вспомните не злым тихим словом, потому что я два часа не мог понять, почему файлы не грузятся

    с уважением

Добавить комментарий

Ваш e-mail не будет опубликован.