WooCommerce在用户注册和我的账户页面添加自定义字段

文 / @WordPress主题

关于在WooCommerce中自定义用户注册表单和我的账户页面

我是个电子商务网站的开发者,大多数情况下,我们都希望在用户注册时就获取更多的用户信息,而不仅仅是用户名和密码。幸运的是,WooCommerce可以自定义功能页面的模版文件,这就给我们自定义用户注册页面和我的账户页面的字段提供了可能。

具体而言,我们可以把相应的模板文件复制到主题文件夹中相应的位置,然后就可以开始使用WooCommerce模版文件开发了。比如,如果我要添加用户的姓名到注册页面,需要编辑主题文件夹中,WooCommerce的form-login.php文件,并添加如下代码:

<pclass="form-rowform-row-wide">
<labelfor="reg_first_name"><?php_e('FirstName','woocommerce');?><spanclass="required">*</span></label>
<inputtype="text"class="input-text"requiredname="first_name"id="reg_first_name"value="<?phpif(!empty($_POST['first_name']))echoesc_attr($_POST['first_name']);?>"/>
</p>

<pclass="form-rowform-row-wide">
<labelfor="reg_last_name"><?php_e('LastName','woocommerce');?><spanclass="required">*</span></label>
<inputtype="text"class="input-text"requiredname="last_name"id="reg_last_name"value="<?phpif(!empty($_POST['last_name']))echoesc_attr($_POST['last_name']);?>"/>
</p>

这就向用户注册表单中添加了“姓名”字段。接下来,我们需要在用户注册时保存这些数据。为此,可以在functions.php中挂载一个保存用户的功能到“user_register”动作,代码如下:

add_action('user_register','pft_registration_save',10,1);
functionpft_registration_save($user_id){
if(isset($_POST['first_name']))
update_user_meta($user_id,'first_name',$_POST['first_name']);
if(isset($_POST['last_name']))
update_user_meta($user_id,'last_name',$_POST['last_name']);
if(isset($_POST['title']))
update_user_meta($user_id,'title',$_POST['title']);
if(isset($_POST['dob']))
update_user_meta($user_id,'dob',$_POST['dob']);
}

最后,我们还需要在编辑用户页面中添加同样的数据。用户编辑页面的代码在woocommerce/myaccount/form-edit-account.php中,和form-login.php一样,添加相应的字段即可,代码如下:

<pclass="form-rowform-row-first">
<labelfor="account_first_name"><?php_e('Firstname','woocommerce');?><spanclass="required">*</span></label>
<inputtype="text"class="input-text"name="account_first_name"id="account_first_name"value="<?phpechoesc_attr($user->first_name);?>"/>
</p>
<pclass="form-rowform-row-last">
<labelfor="account_last_name"><?php_e('Lastname','woocommerce');?><spanclass="required">*</span></label>
<inputtype="text"class="input-text"name="account_last_name"id="account_last_name"value="<?phpechoesc_attr($user->last_name);?>"/>
</p>

需要注意的是,在技术上,注册时获取更多的用户信息是可行的,但这可能会增加注册的难度,导致用户注册率的降低。因此,在获取更多用户信息之前,需要仔细考虑是否真的需要这些信息。如果没有这些信息,用户交易可以照常进行,还是不要这些信息比较好。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。