预先填写woocommerce结帐中的结算字段
问题描述:
在我的项目中,我使用woocommerce的直接结账插件,以便在一个页面上拥有购物车和结帐。预先填写woocommerce结帐中的结算字段
而且客户想要的订单流程是这样的
- 我们在WordPress的订单页面,用户输入自己的姓名,地址,电话,电子邮件,选择价格,然后重定向到一个直接结帐。
- 在结帐页面上,我们希望字段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');