我尝试 var_dump($ _ POST); 在与表单相同的页面上,我得到的只是一个空数组。
为什么 $ _ POST 为空? 我无法看到随表单发布的值。
<form name="car_form" id="car_form" method="post" action="" >
<input type="text" name="brand">
<input type="text" name="color">
<input type="submit" name="submit" value="Add car" class="button">
</form>
答案 0 :(得分:0)
基于this answer,我认为这些代码适用于您的情况。首先是表单代码。您会注意到我已将操作属性更改为提交到admin-post.php
,并且我在表单中添加了2个新字段。
<form name="car_form" id="car_form" method="post" action="<?= admin_url('admin-post.php') ?>" >
<input type="text" name="brand">
<input type="text" name="color">
<input type="submit" name="submit" value="Add car" class="button">
<!-- 2 new fields -->
<input type="hidden" name="action" value="car_form">
<?php wp_nonce_field('car_form_nonce', 'car_form_nonce'); ?>
</form>
然后,在PHP的某个地方,你需要注册一个WP动作来处理POST请求,并定义触发该动作时将被调用的函数,如下所示:
<?php
add_action('admin_post_nopriv_car_form', 'carFormSubmit');
add_action('admin_post_car_form', 'carFormSubmit');
function carFormSubmit() {
var_dump($_POST); //$_POST variables should be accessible now
//Optional: Now you can redirect the user to your confirmation page using wp_redirect()
}
如果您不能100%确定该代码的位置,functions.php
是一个不错的默认位置。注意:我没有测试过这段代码,但它应该足以让你开始。
不幸的是,这有必要避免WordPress重定向您的表单提交并丢失所有POST数据。