WordPress 表单未提交

Raj*_*esh 4 php forms wordpress action

您好,我对 WordPress 非常陌生,根据我的要求,我在 WordPress 主题中创建了几个 php 文件。其中detailsform.php包含

<form method="post" name="details" action="customerdetails.php">
Run Code Online (Sandbox Code Playgroud)

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

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

Abr*_*ham 5

由于 wordpress 有其自己的特定方式来处理 ajax 调用,因此 wordpress 也有通过表单提交来处理 post http 请求的方式。在WordPress 的 Codex中有更多关于这方面的细节。

简要说明一下,在 WordPress 主题上使用 Functions.php 文件:

您需要做的第一件事是在表单标记的操作属性中设置,指向以下网址:

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

一旦指向,您需要添加一个隐藏输入,其中包含名称属性操作和指定操作名称的值属性。然后,您需要在functions.php 文件上构建处理函数。您将在此处编写处理全局$_POST$_REQUEST变量收到的数据所需的代码。

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

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

add_action( 'admin_post_nopriv_my_handler_function', 'my_handler_function' );
Run Code Online (Sandbox Code Playgroud)

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

就约定而言,通常将函数处理程序的名称设置为与操作输入的值相同,以避免误解并获得更好的可读性。

将所有内容放在一起后,您所要做的就是测试您的代码。

快乐编码!!

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