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. }

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/81793

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买