WordPress教程

WooCommerce 我的账户注册表单添加下拉选择字段

也想出现在这里?联系我们
创客云

在做 WooCommerce 开发时,我们可能需要对“我的账户”注册字段做一些修改。今天,我们来分享一下 WooCommerce 添加下拉选择字段到“我的账户”注册表单的方法,具体效果如下所示:
WooCommerce 我的账户注册表单添加下拉选择字段-云模板
除了注册表单字段以外,我们还需要在“编辑账户”页面将这个字段也添加进来:
WooCommerce 我的账户注册表单添加下拉选择字段-云模板
我们还可以在后台的“我的个人资料”页面添加对应的字段,允许用户在后台修改该字段:
WooCommerce 我的账户注册表单添加下拉选择字段-云模板
实现以上所有功能的代码如下:

  1. <?php
  2. /**
  3. * @snippet       Add Select Field to "My Account" Register Form | WooCommerce
  4. * @how-to        Get CustomizeWoo.com FREE
  5. * @sourcecode    https://businessbloomer.com/?p=72508
  6. * @author        Rodolfo Melogli
  7. * @testedwith    WooCommerce 3.5.7+
  8. * @donate $9     https://businessbloomer.com/bloomer-armada/
  9. */
  10.  
  11. // -------------------
  12. // 1. 在我的账户页面的注册表单添加选择字段
  13.  
  14. add_action( 'woocommerce_register_form', 'bbloomer_extra_register_select_field' );
  15.  
  16. function bbloomer_extra_register_select_field() {
  17. ?>
  18.  
  19. 	<p class="form-row form-row-wide">
  20. 		<label for="find_where"><?php _e( 'Where did you find us?', 'woocommerce' ); ?>  <span class="required">*</span></label>
  21. 		<select name="find_where" id="find_where" />
  22. 			<option value="goo">Google</option>
  23. 			<option value="fcb">Facebook</option>
  24. 			<option value="twt">Twitter</option>
  25. 		</select>
  26. 	</p>
  27.  
  28. <?php
  29.  
  30. }
  31.  
  32. // -------------------
  33. // 2. 在注册时保存字段值
  34.  
  35. add_action( 'woocommerce_created_customer', 'bbloomer_save_extra_register_select_field' );
  36.  
  37. function bbloomer_save_extra_register_select_field( $customer_id ) {
  38. 	if ( isset( $_POST['find_where'] ) ) {
  39. 		update_user_meta( $customer_id, 'find_where', $_POST['find_where'] );
  40. 	}
  41. }
  42.  
  43. // -------------------
  44. // 3. 在后台“我的个人资料”和前台“我的账户-编辑账户”界面显示新增的字段
  45.  
  46. add_action( 'show_user_profile', 'bbloomer_show_extra_register_select_field', 30 );
  47. add_action( 'edit_user_profile', 'bbloomer_show_extra_register_select_field', 30 ); 
  48. add_action( 'woocommerce_edit_account_form', 'bbloomer_show_extra_register_select_field', 30 );
  49.  
  50. function bbloomer_show_extra_register_select_field($user){ 
  51.  
  52. 	if (empty ($user) ) {
  53. 		$user_id = get_current_user_id();
  54. 		$user = get_userdata( $user_id );
  55. 	}
  56.  
  57. 	?>    
  58.  
  59. 	<p class="form-row form-row-wide">
  60. 		<label for=""><?php _e( 'Where did you find us?', 'woocommerce' ); ?>  <span class="required">*</span></label>
  61. 		<select name="find_where" id="find_where" />
  62. 			<option disabled value> -- select an option -- </option>
  63. 			<option value="goo" <?php if (get_the_author_meta( 'find_where', $user->ID ) == "goo") echo 'selected="selected" '; ?>>Google</option>
  64. 			<option value="fcb" <?php if (get_the_author_meta( 'find_where', $user->ID ) == "fcb") echo 'selected="selected" '; ?>>Facebook</option>
  65. 			<option value="twt" <?php if (get_the_author_meta( 'find_where', $user->ID ) == "twt") echo 'selected="selected" '; ?>>Twitter</option>
  66. 		</select>
  67. 	</p>
  68.  
  69. <?php
  70. }
  71.  
  72. // -------------------
  73. // 4. 在后台“我的个人资料”和前台“我的账户-编辑账户”保存新增字段的值
  74.  
  75. add_action( 'personal_options_update', 'bbloomer_save_extra_register_select_field_admin' );    
  76. add_action( 'edit_user_profile_update', 'bbloomer_save_extra_register_select_field_admin' );   
  77. add_action( 'woocommerce_save_account_details', 'bbloomer_save_extra_register_select_field_admin' );
  78.  
  79. function bbloomer_save_extra_register_select_field_admin( $customer_id ){
  80. 	if ( isset( $_POST['find_where'] ) ) {
  81. 	   update_user_meta( $customer_id, 'find_where', $_POST['find_where'] );
  82. 	}
  83. }
也想出现在这里?联系我们
创客主机

服务范围 1、专业提供WordPress主题、插件汉化、优化、PHP环境配置等服务请详询在线客服
2、本站承接 WordPress、DedeCMS、ThinkPHP 等系统建站、仿站、开发、定制等服务
3、英文模板(主题)安装费用为120元/次,汉化主题首次免费安装(二次安装30元/次)
售后时间 周一至周五(法定节假日除外) 10:00-22:00
免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 2107117185@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!
也想出现在这里?联系我们
360uxc
(0)

本文由来源 WordPress大学,由 PetitQ 整理编辑!

也想出现在这里?联系我们
创客主机

热评文章

发表评论

精彩推荐

Medizin - 医疗器械医护用品外贸商店WooCommerce汉化主题

Envato Affiliates

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!

嘿,欢迎咨询!