Статьи

Разработка многостраничной формы в WordPress: заполнение форм и создание отчетов

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

В этой статье мы обновим нашу базу данных самыми последними значениями и выведем сообщение «Спасибо!». Мы также хотим, чтобы вы могли просматривать результаты без необходимости заходить в phpMyAdmin, поэтому я покажу вам быстрый и простой способ сделать это.

Шаг 1: добавьте последние входные данные формы

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

[sourcecode language = ”php”]

// Стартовая страница 4 формы
elseif ($ page == 3) {

$ location = $ _POST [‘location’];
$ category = $ _POST [‘category’];
$ page = $ _POST [‘page’];
$ form_id = $ _POST [‘form_id’];

$ page_three_table = ‘shopping_preferences’;
$ page_three_inputs = array (
‘location’ => $ location,
‘category’ => $ category,
‘page’ => $ page
);
$ page_three_where = array (
‘id’ => $ form_id
);

$ insert_page_three = $ wpdb-> update ($ page_three_table, $ page_three_inputs, $ page_three_where);

} // Конечная страница 4 формы

[/исходный код]

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

Шаг 2: Создайте собственное сообщение «Спасибо!»

Теперь вы можете вставить что угодно в качестве сообщения «Спасибо!». Вы можете пойти с чем-то простым:

[sourcecode language = ”php”]

$ insert_page_three = $ wpdb-> update ($ page_three_table, $ page_three_inputs, $ page_three_where);

echo ‘<h3> Большое спасибо! </ h3>’;
echo ‘<p> Мы очень ценим, что вы нашли время, чтобы заполнить этот опрос! Вы все сделали! </ P> ‘;

} // Конечная страница 4 формы

[/исходный код]

Или вы можете создать полностью настроенный ответ на основе их входных данных. Это ваш выбор на данный момент.

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

Шаг 3: Пользовательские отчеты — выгрузка данных в таблицу HTML

Теперь вам может потребоваться возможность самостоятельно просматривать входные данные формы или настроить представление для своего клиента. Я предпочитаю простой скрипт PHP, который вызывает данные и отображает их на странице в табличном формате. Это позволяет вашим клиентам выгружать его в Excel или любое другое программное обеспечение, которое они предпочитают для манипулирования данными. Начнем с простого сброса всей информации в таблице.

(Примечание: вам нужно будет иметь возможность загрузить документ через FTP на ваш сайт WordPress или использовать хостинг вашего домена для загрузки файла.)

Создайте новый файл PHP со следующим:

[sourcecode language = ”php”]

<? PHP

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-load.php’);
include ($ location. ‘/wp-includes/pluggable.php’);
глобальный $ wpdb;

$ form_results = $ wpdb-> get_results («SELECT * FROM shopping_preferences»);

echo ‘<table cellpadding = «0» cellspacing = «0» border = «1»>
<THEAD>
<TR>
<Й> ID </ й>
<th> Имя </ th>
<th> Фамилия </ th>
<Й> Электронная почта </ й>
<Й> Телефон </ е>
<th> почтовый индекс </ th>
<Й> Пол </ й>
<Й> Возраст </ й>
<Й> Образование </ е>
<Й> Доходы </ е>
<Й> Местоположение </ е>
<Й> Категория </ й>
<Й> Страница </ е>
<Й> Отметка </ е>
</ TR>
</ THEAD> ‘;

foreach ($ form_results как $ form_results) {
эхо
<TR>
<td> ‘. $ form_results-> id. </ TD>
<td> ‘. $ form_results-> first_name. </ TD>
<td> ‘. $ form_results-> last_name. </ TD>
<td> ‘. $ form_results-> электронная почта. </ TD>
<td> ‘. $ form_results-> телефон. </ TD>
<td> ‘. $ form_results-> zip_code. </ TD>
<td> ‘. $ form_results-> пол. </ TD>
<td> ‘. $ form_results-> age. </ TD>
<td> ‘. $ form_results-> образование. </ TD>
<td> ‘. $ form_results-> Доход. </ TD>
<td> ‘. $ form_results-> местоположение. </ TD>
<td> ‘. $ form_results-> категории. </ TD>
<td> ‘. $ form_results-> страница. </ TD>
<td> ‘. $ form_results-> отметка времени. </ TD>
</ TR>
«;
}

echo ‘</ tr> </ table>’;

?>

[/исходный код]

Этот код предполагает, что ваша установка WordPress находится в корневой папке вашего сайта. Если нет, измените первые три оператора INCLUDE, чтобы иметь правильную папку.

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

Далее мы настраиваем запрос, используя встроенную функцию get_results (). Вы можете выполнить любой запрос, используя стандартный синтаксис SQL и MYSQL, если вам удобнее работать с этими языками.

Затем мы создали наш стол. С CSS и JavaScript вы можете получить все, что захотите, но для этого примера я просто хочу дать вам несколько основных инструментов.

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

[sourcecode language = ”php”]

<? PHP

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-load.php’);
include ($ location. ‘/wp-includes/pluggable.php’);
глобальный $ wpdb;

$ form_results = $ wpdb-> get_results («ВЫБЕРИТЕ электронную почту, возраст, пол ОТ покупки_преференции»);

echo ‘<table cellpadding = «0» cellspacing = «0» border = «1»>
<THEAD>
<TR>
<Й> Электронная почта </ й>
<Й> Возраст </ й>
<Й> Пол </ й>
</ TR>
</ THEAD> ‘;

foreach ($ form_results как $ form_results) {
эхо
<TR>
<td> ‘. $ form_results-> электронная почта. </ TD>
<td> ‘. $ form_results-> age. </ TD>
<td> ‘. $ form_results-> пол. </ TD>
</ TR>
«;
}

echo ‘</ tr> </ table>’;

?>

[/исходный код]

Создайте все пользовательские отчеты, которые вы хотите таким образом, и дайте клиенту ссылку на каждый из них. Поскольку им нужно больше отчетов, это так же просто, как создать запрос и затем выполнить любую другую математику, необходимую для выполнения на стороне клиента с помощью JavaScript (хотя правильно структурированный запрос SQL должен приблизить вас к большинству требований к отчетности).

Шаг 4: Защитите свои отчеты

Хотя технически вы можете оставить отчеты свободными для выполнения кем-либо с URL, очевидно, вы не должны этого делать. Используя приведенный выше пример, вся электронная почта, имена и другая пользовательская информация предоставляется любому, у кого есть ссылка.

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

Во-первых, мы хотим создать шорткод, чтобы отчеты могли отображаться в записи или на странице. Это можно сделать в файле functions.php вашей темы или в отдельном плагине:

[sourcecode language = ”php”]

add_shortcode ( ‘multipage_email_age_gender_report_sc’, ‘multipage_email_age_gender_report’);

function multipage_email_age_gender_report () {

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/aeonstrong/wp-config.php’);
include ($ location. ‘/aeonstrong/wp-load.php’);
include ($ location. ‘/aeonstrong/wp-includes/pluggable.php’);
глобальный $ wpdb;

$ form_results = $ wpdb-> get_results (
«
ВЫБЕРИТЕ email, возраст, пол
FROM shopping_preferences
«);

echo ‘<table cellpadding = «0» cellspacing = «0» border = «1»>
<THEAD>
<TR>
<Й> Электронная почта </ й>
<Й> Возраст </ й>
<Й> Пол </ й>
</ TR>
</ THEAD> ‘;

foreach ($ form_results как $ form_results) {
эхо
<TR>
<td> ‘. $ form_results-> электронная почта. </ TD>
<td> ‘. $ form_results-> age. </ TD>
<td> ‘. $ form_results-> пол. </ TD>
</ TR>
«;
}

echo ‘</ tr> </ table>’;
}

?>

[/исходный код]

На данный момент любой, кто может получить доступ к сообщению или странице, может увидеть эти результаты. При желании вы можете использовать встроенную защиту паролем для каждого поста или для каждой страницы — иногда клиентам это нравится. И именно поэтому я включил эту версию вместо того, чтобы переходить прямо к пользовательским отчетам.

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

[sourcecode language = ”php”]

add_shortcode ( ‘multipage_email_age_gender_report_sc’, ‘multipage_email_age_gender_report’);

function multipage_email_age_gender_report () {
if (current_user_can (‘create_users’)) {

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-load.php’);
include ($ location. ‘/wp-includes/pluggable.php’);
глобальный $ wpdb;

$ form_results = $ wpdb-> get_results (
«
ВЫБЕРИТЕ email, возраст, пол
FROM shopping_preferences
«);

эхо
<table cellpadding = «0» cellspacing = «0» border = «1»>
<THEAD>
<TR>
<Й> Электронная почта </ й>
<Й> Возраст </ й>
<Й> Пол </ й>
</ TR>
</ THEAD> ‘;

foreach ($ form_results как $ form_results) {
эхо
<TR>
<td> ‘. $ form_results-> электронная почта. </ TD>
<td> ‘. $ form_results-> age. </ TD>
<td> ‘. $ form_results-> пол. </ TD>
</ TR>
«;
}

echo ‘</ tr> </ table>’;
} // End If
еще {
echo ‘<p> У вас нет прав для просмотра этого отчета. </ p>’;
} // Конец еще
} // Конец multipage_email_age_gender_report ()

[/исходный код]

Вывод

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

Я не могу дождаться, чтобы увидеть, что вы все придумали! Пожалуйста, не стесняйтесь поделиться; Вы могли бы даже получить некоторые ценные данные из этого!