Пользовательский обработчик ввода, который возвращает данные на страницу - PullRequest
0 голосов
/ 15 апреля 2020

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

Цель: Получить диапазон дат от пользователя на странице Wordpress, использовать диапазон дат в запросе API, отобразить данные из ответа API на странице Wordpress.

Текущее решение: Даты начала и окончания отправляются в форме HTML на странице Wordpress с методом POST. Запрос POST не перенаправляется на любую другую страницу. В дополнение к параметрам start и end в форме есть скрытый параметр action с указанным мною пользовательским значением: <input type="hidden" name="action" value="custom-value">. Я написал плагин, который использует хук init. Подключенная функция проверяет $_REQUEST['action'], чтобы определить, соответствует ли оно пользовательскому значению в форме, и если это так, она выполняет запрос GET к API (leisure.gov), используя start и end даты из формы. До этого момента решение мне показалось довольно solid. Вот где учебники закончились, и мне пришлось получить ...... изобретательность.
Данные из запроса API обрабатываются и форматируются в HTML, и эта строка сохраняется как переходный процесс, используя set_transient с 3 секунды продолжительности жизни. На исходной странице, с которой была отправлена ​​форма, есть короткий код, который просто возвращает переходный процесс. Теперь у меня есть данные из API на той же странице, с которой пользователь указал диапазон дат.

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

Поскольку этот вопрос касается методологии, а не синтаксиса, я не включил пример кода, но Я мог бы, если бы это было полезно. Заранее спасибо за совет.

1 Ответ

0 голосов
/ 01 мая 2020

Решение, которое я нашел, заключалось в том, чтобы отключить плагин и делать все внутри шорткода. У шорткода есть доступ к $_REQUEST['action'], о котором я не знал, поэтому я смог получить пользовательский ввод и выполнить вызов API в шорткоде, затем отформатировать результаты и вернуть их. Нет необходимости иметь дело с плагинами и хуками, потому что шорткод выполняется при загрузке страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...