预先填写woocommerce结帐中的结算字段

问题描述:

在我的项目中,我使用woocommerce的直接结账插件,以便在一个页面上拥有购物车和结帐。预先填写woocommerce结帐中的结算字段

而且客户想要的订单流程是这样的

  1. 我们在WordPress的订单页面,用户输入自己的姓名,地址,电话,电子邮件,选择价格,然后重定向到一个直接结帐。
  2. 在结帐页面上,我们希望字段billing_name,billing_address等已预先填入订单页面的数据。

所以问题是我怎么能将这些数据传递给结账?

而另一方面,如何在填充传递的数据之前清除这些字段?

我刚刚在我正在构建的网站上遇到同样的问题。我们在调查中收集电子邮件地址,如果用户继续结帐,我们希望电子邮件字段被预先填写。我存储在WooCommerce会议的电子邮件地址时,调查表单提交这样的:

$woocommerce->session->set('survey_email', $_POST['survey_email']); 

然后,我钩住woocommerce_checkout_fields过滤器(see docs)填写表单字段。您不能直接设置字段的值,但可以设置默认值的值,如果用户登录,则可以覆盖该值。

function override_checkout_email_field($fields) { 
    global $woocommerce; 
    $survey_email = $woocommerce->session->get('survey_email'); 
    if(!is_null($survey_email)) { 
     $fields['billing']['billing_email']['default'] = $survey_email; 
    } 
    return $fields; 
} 

add_filter('woocommerce_checkout_fields' , 'override_checkout_email_field');