WordPress教程

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. }
也想出现在这里?联系我们
创客主机

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

已有 263 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

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