【发布时间】:2015-04-21 01:18:30
【问题描述】:
我正在研究一个 WordPress 进程,但这似乎更像是一个与 WordPress 特定相关的一般 PHP 和数组操作问题,在这种情况下与 WooCommerce 相关。
如果我有一个表单可以提交 1 到大约 35 个相同类型的条目,那么据我了解,我可以按如下方式创建它。我正在使用名字和姓氏。
表单输入,简化后如下所示:
echo ' <input type="text" name="first_name[]" id="first_name" />';
echo ' <input type="text" name="last_name[]" id="last_name" />';
在上面的完整版本中,行会根据需要重复多次,使用迭代变量将 id 顺序区分,并预先填充和隐藏其他值。有一个并行版本旨在将变量作为隐藏字段发布。
发布操作如下所示:
if (isset($_POST) == true) {
$att_data = array(
'last_name' => $_POST['last_name'],
'first_name' => $_POST['first_name']
);
WordPress 函数 add_post_meta 然后应该将 $att_data 添加到数据库中。它可以作为没有表单的直接“添加”操作正常工作,或者使用虚拟变量代替 $_POST[...]。然而不幸的是,在我的调试控制台上使用表单/提交/$_POST 的版本给我的是
["last_name"]=> NULL ["first_name"]=> NULL
因此,表单正在提交,或者至少 post 操作正在发布,并且数组正在发送,但 $_POST 变量没有被捕获。为什么不呢?
附加:等一下 - 我想知道 WooCommerce 是否在重新定向之前清除了所有 $_POST 变量......现在正在研究。
【问题讨论】:
-
你试过转储完整的
$_POST,只是为了看看它包含什么? -
您是否尝试过
var_dump($_POST);来查看变量发生了什么?编辑:是的,@mevius 说的。 -
不幸的是,出于测试目的,提交操作会重定向到新页面,所以 var_dump($_POST) 只是给了我新页面上的帖子变量。在我编写一个新函数之前,在相关页面上的活动表单之外的新区域中生成一个新表单,或者想一想,阻止重定向发生(这是 WooCommerce 结帐操作的一部分),我首先想清楚我的语法“应该”按书面形式工作。我会这样做(这是一个比听起来更复杂的操作),除非有一种简单的方法可以在其他地方捕获 $_POST 转储,我不知道。
-
页面上的 var_dump($_POST) 禁用了重定向,会生成一个空数组。我现在想知道(虽然,我什至不知道这是否合理),如果 WooCommerce 刷新其结帐表单提交的 $_POST 变量,其中我的表单是“嵌套的”(不是字面上的“嵌套”,因为这是不允许的 - 我的在 WooC 的“下订单”上形成捎带。
-
你能试试
die(var_dump($_POST)吗?我一直在使用它。
标签: php arrays wordpress forms woocommerce