Wordpress中$ _POST为空

时间:2018-01-03 19:03:47

标签: php wordpress woocommerce

我尝试 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>

1 个答案:

答案 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数据。