WordPress Форма действия представить - PullRequest
5 голосов
/ 28 февраля 2011

имеют собственную форму в WordPress.

action=<?php bloginfo('template_url'); ?>/send_form.php"

при отправке всегда идет в send_form.php но этот PHP для отправки информации - и я не могу стиль с темой ....

есть ли способ остаться на текущей странице, пока она отправляет информацию, распечатывает и сообщает в поле, что форма успешно отправлена ​​???

у кого-нибудь есть предложения для меня?

Ответы [ 2 ]

10 голосов
/ 28 февраля 2011

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

  1. Необходимо установить действие для загрузки текущей страницы, и выэто можно сделать, изменив атрибут action в теге <form> на: action=""
  2. В файле шаблона для этой страницы определите, когда страница загружается после отправки формы.Это можно сделать, проверив состояние переменной $ _ POST .
  3. Если в имеются переменные записи, обработайте отправку формы в файле шаблона.Вам нужно посмотреть, что происходит в "send_form.php", чтобы понять, что делать.Позаботьтесь о том, чтобы не возникало проблем с безопасностью (например, обязательно используйте NONCE).
  4. Перенаправьте обратно на ту же страницу, чтобы избавиться от переменных post.Если вы этого не сделаете, люди получат предупреждающие сообщения «Хотите отправить форму»?См. PHP header () функцию для выполнения перенаправления и обратите внимание, что это должно произойти, прежде чем любой вывод будет отправлен на страницу.
  5. Используйте сеансы сервера для отображения«Форма успешно отправлена».Установите переменную сеанса для вашего сообщения перед перенаправлением, затем определите его при загрузке страницы, отобразите его и удалите, чтобы сообщение не отображалось при следующей загрузке страницы.

Это должнодать вам отправную точку.

Если у кого-то есть более простое решение, я бы тоже хотел его услышать.

0 голосов
/ 25 января 2018

Если вы хотите сделать это через плагин вместо темы, используйте действия «admin_post» (admin_post_YOUR_ACTION) и «admin_post_nopriv» (admin_post_nopriv_YOUR_ACTION). (Кстати, вы можете использовать эти действия также через тему)

Вот хорошее объяснение: https://www.sitepoint.com/handling-post-requests-the-wordpress-way/

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