Wordpress中$ _POST为空

问题描述 投票:0回答:1

我试着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>
php wordpress woocommerce
1个回答
0
投票

基于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数据。

© www.soinside.com 2019 - 2024. All rights reserved.