php - Wordpress 表单未提交

标签 php wordpress forms action

您好,根据我的要求,我是 WordPress 的新手,我已经在 wordpress 主题中创建了几个 php 文件。其中 detailsform.php 包含

<form method="post" name="details" action="customerdetails.php">

点击提交按钮后,表单必须重定向到 php 中的 customerdetails.php 它工作正常但在 wordpress 中它给出 404 错误(找不到页面)我将所有新的 php 文件保存在现有的主题文件夹中。

请建议我它正在消磨我的时间。

最佳答案

由于 wordpress 有它自己的特定方式来处理 ajax 调用,wordpress 也有它用于通过表单提交来发布 http 请求。在codex on wordpress有关于此的更多详细信息。

在一个简短的解释中,在你的 wordpress 主题上使用你的 functions.php 文件:

您需要做的第一件事是在您的 form 标记的 action 属性中设置,指向以下 url:

<form action="http://www.example.com/wp-admin/admin-post.php" method="post"> <input type="hidden" name="action" value="my_handler_function"> </form>

指向后,您需要添加一个隐藏输入,其名称属性为action 和一个指定您的操作名称的值属性。然后,您需要在 functions.php 文件上构建处理函数。这是您要编写处理全局 $_POST$_REQUEST 变量接收的数据所需的代码的地方。

function my_handler_function() {
  var_dump($_REQUEST);
  die();
//request handlers should die() when they complete their task
}

下一步是使用操作 Hook admin_post_nopriv_admin_post_ 将此函数绑定(bind)到您的表单。这些之间的区别在于放置表单的位置。如果您的表单用于 wordpress 管理员的自定义功能,那么它是私有(private)的,您可以使用 admin_post Hook 操作。如果此表单是您公开内容的一部分,则使用 admin_post_nopriv_,如下例所示:

add_action( 'admin_post_nopriv_my_handler_function', 'my_handler_function' );

如上面的代码示例所示,您需要调用 add_action功能。在第一个参数中,需要传递wordpress提供的action hook结合表单中名为actionhidden input指定的action值,如 admin_post_nopriv_$action_value。在第二个参数中,您需要放置您在 functions.php 文件上构建的函数名称。两者都是强制性的。

为了约定,一般情况下,函数处理程序的名称设置为与 Action 输入的值相同,以避免误解并增加可读性。

一旦一切都放在一起,您所要做的就是测试您的代码。

编码愉快!!

PD:如果你想弄清楚wordpress的这个程序,请看wp-admin/admin-post.php文件,但更不敢修改。

关于php - Wordpress 表单未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45136097/

相关文章:

javascript - 当前页面上的 ajax 调用后 jQuery 不触发

javascript - 如果div为空,设置容器div为 "display:none"

css - 自定义 CSS 禁用按钮功能

c++ - 从 C++ 自动登录网站

php - 如何解决 Windows 中的 "Call to undefined function dbase_open() "错误

php - 从 php 脚本调用的 INSERT INTO 失败

javascript - jQuery/PHP 表单提交意外行为

php - 表单中的多个提交按钮

php - Xampp访问禁止php

php - Hooks around 添​​加到 Woocommerce 的购物车