【问题标题】:wordpress form action submitwordpress 表单动作提交
【发布时间】:2011-07-05 11:00:43
【问题描述】:

在 wordpress 中有自己的自定义表单。

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

提交时,它总是发送到 send_form.php 但是这个 php 是用来发送信息的——我不能用这个主题来风格....

有没有办法在发送信息时留在当前页面,并在表单已成功发送的字段中打印和消息???

有人对我有什么建议吗?

【问题讨论】:

    标签: wordpress forms


    【解决方案1】:

    这个问题的答案非常复杂,要做到正确需要一点小心,但以下是一种方法的要点:

    1. 该操作必须设置为加载当前页面,您可以通过将&lt;form&gt; 标记中的action 属性更改为:action=""
    2. 在此页面的模板文件中,检测表单提交后页面何时加载。您可以通过检查$_POST variable 的状态来做到这一点。
    3. 如果有post变量,在模板文件中处理表单提交。您需要查看“send_form.php”中发生的情况以弄清楚该做什么。注意不要引入安全问题(例如,一定要使用 NONCE)。
    4. 重定向回同一页面以删除帖子变量。如果您不这样做,人们将收到“您要重新提交表单”警告消息。请参阅 PHP header() function 进行重定向,并注意这必须在任何输出发送到页面之前发生。
    5. 使用server sessions 显示“表单提交成功”。在重定向之前为您的消息设置一个会话变量,然后在页面加载时检测它、显示它并删除它,以便下次页面加载时不会显示消息。

    这应该给你一个起点。

    如果其他人有更简单的解决方案,我也很想听听。

    【讨论】:

    • 感谢您的帮助!我发现 ajax 可以解决这个问题。所以打算在这个上尝试 ajax。
    • 这是真的,我应该提到它。需要考虑的一件事是,未启用 Javascript 的浏览器将不支持 AJAX 方法,因此您需要考虑发生这种情况时的回退体验。这只是一小部分用户并且越来越小,因此根据您的流量,这可能不是问题。
    • 是的,没错。 % 真的很小,因为 90% 以上的当前网站使用 jquery/scriptacluous 等等。所以不要认为会影响那么大
    【解决方案2】:

    如果您想通过插件而不是主题来完成,请使用“admin_post”(admin_post_YOUR_ACTION)和“admin_post_nopriv”(admin_post_nopriv_YOUR_ACTION)操作。 (顺便说一句,您也可以通过主题使用这些操作)

    这里有一个很好的解释:https://www.sitepoint.com/handling-post-requests-the-wordpress-way/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 2012-05-22
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多