我试着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>
基于this answer,这里有一些我认为适合您情况的代码。首先是表单代码。您会注意到我更改了action属性以提交给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数据。