我真的希望我面前有一个简单的问题,因为这有点把我逼疯了。
短篇故事:在网站前端提交一个简单的表单会导致302 Found
重定向,完全剥离$_POST
过程中的数据。
场景:
在名为Edit创建自定义模板文件(即,my-edit-template.php
) 并将其应用于Edit
my-edit-template.php:
<?php
/**
* Template Name: My Edit Template
*/
if ($_POST[\'action\']) {
var_dump($_POST);
}
get_header(); ?>
<form action="" method="post">
<input name="my-ornery-field" value="">
<input type="submit" value="submit">
<input type="hidden" id="action" name="action" value="update-profile">
</form>
<?php get_footer(); ?>
现在,当我提交表单时,我在同一页上收到两个请求,第一个是
POST
, 在表单数据保持不变的情况下
GET
(状态代码
200
), 显然被剥夺了
$_POST
全球或任何对我有用的东西。
我确信这是一个彻底的疏忽,但我不知所措;完全困惑。
我尝试过:
所有已禁用的插件刷新重写回基本默认值POST
通过Javascript进行ing/XHR
帮助?
如果细节不多,我很抱歉,我现在正在上课,但稍后我会跟进其他相关内容
最合适的回答,由SO网友:Ihor Vorotnov 整理而成
这个问题已经很老了,但却是唯一一个针对这类问题突然出现的问题。我今天晚上做了这个,花了将近4个小时让自己撞到墙上——禁用插件,到处评论代码(这是一个大型多站点项目,有很多自定义功能和前端表单、自定义URL和模板等)。那是一种痛苦。。。
我就把它留在这里。也许这会节省一些人几个小时。
“”When building custom frontend forms, always prepend your
input/select/etc names with your custom prefix.“”
当您忘记这一点并开始命名字段以适应全局命名约定时,可以创建一个显示自定义分类法的选择,并将其命名为与自定义分类法本身命名相同的名称。当您点击“提交”时,WordPress会收到您的$\\u POST数据,对其进行解析,“理解”此名称为其注册的$query\\u var,并转换请求,添加此$query\\u var。当然,它会导致重定向,清除您的$\\u POST数据,并阻止表单执行其应该执行的操作。