我有一个wordpress网站,正在使用WooCommerce出售我开发的应用程序的注册。为了简化注册过程,我希望用户能够单击应用程序中的注册按钮,直接进入我的WooCommerce签出页面,注册产品已加载到购物车中,并且在签出页面的用户名字段(我已添加)中自动输入用户名(由应用程序生成)。
到目前为止,当用户单击应用程序注册按钮时,应用程序会将其浏览器中的用户发送到如下URL:
http://www.example.com/checkout/?add-to-cart=532&username=myname
在我的
function.php
文件添加到购物车时,我将重定向到签出页面,因此这将打开产品的签出页面
id = 532
已在购物车中。完美的
为了公开username变量,我在functions.php
文件:
add_filter( \'query_vars\', \'add_query_vars_filter\' );
function add_query_vars_filter( $vars ){
$vars[] = "username";
return $vars;
}
为了从查询字符串中捕获用户名并将其输入到已创建的用户名字段中,我还将以下内容添加到
functions.php
文件:
add_filter( \'woocommerce_checkout_fields\' , \'custom_override_checkout_fields\' );
function custom_override_checkout_fields( $fields ) {
$thename = get_query_var( \'username\', \'defaultName\' );
$fields[\'billing\'][\'billing_username\'] = array(
\'label\' => __($label, \'woocommerce\'),
\'placeholder\' => _x($placeholder, \'placeholder\', \'woocommerce\'),
\'required\' => true,
\'class\' => array(\'form-row-wide\'),
\'clear\' => true,
\'default\' => $thename
);
return $fields;
}
不幸的是,
defaultName
在用户名字段中输入。如果我删除
add-to-cart=532
从URL,然后
myname
已输入。我认为问题是当结账页面打开时,
username=myname
从URL中删除。看来我得用
$thename = get_query_var( \'username\', \'defaultName\' )
在打开签出页面的早期过程中(问题之一是我不完全理解这个过程),以某种方式在
custom_override_checkout_fields
my中的函数
functions.php
文件所以问题是我如何做到这一点?