2017-06-19 108 views
0

我在woocommerce註冊頁面上添加了3個自定義字段。如何使WordPress電話號碼在WordPress中唯一

我迄今爲止代碼: -

/* Add Extra Registration Field in Woocommerce */ 

//Add First Name, Last Name, and Phone Number 
function woocom_extra_register_fields() {?> 
     <p class="form-row form-row-wide"> 
     <label for="reg_billing_phone"><?php _e('Phone', 'woocommerce'); ?><span class="required">*</span></label> 
     <input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php esc_attr_e($_POST['billing_phone']); ?>" /> 
     </p> 
     <p class="form-row form-row-first"> 
     <label for="reg_billing_first_name"><?php _e('First name', 'woocommerce'); ?><span class="required">*</span></label> 
     <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if (! empty($_POST['billing_first_name'])) esc_attr_e($_POST['billing_first_name']); ?>" /> 
     </p> 
     <p class="form-row form-row-last"> 
     <label for="reg_billing_last_name"><?php _e('Last name', 'woocommerce'); ?><span class="required">*</span></label> 
     <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if (! empty($_POST['billing_last_name'])) esc_attr_e($_POST['billing_last_name']); ?>" /> 
     </p> 
     <div class="clear"></div> 
     <?php 
} 
add_action('woocommerce_register_form_start', 'woocom_extra_register_fields'); 


//Validate Fields 
function woocom_validate_extra_register_fields($username, $email, $validation_errors) { 

     if (isset($_POST['billing_first_name']) && empty($_POST['billing_first_name'])) { 

      $validation_errors->add('billing_first_name_error', __('<strong>Error</strong>: First name is required!', 'woocommerce')); 

     } 

     if (isset($_POST['billing_last_name']) && empty($_POST['billing_last_name'])) { 

      $validation_errors->add('billing_last_name_error', __('<strong>Error</strong>: Last name is required!.', 'woocommerce')); 

     } 
     if (isset($_POST['billing_phone']) && empty($_POST['billing_phone'])) { 

      $validation_errors->add('billing_phone_error', __('<strong>Error</strong>: Mobile number is required!.', 'woocommerce')); 

     } 
     return $validation_errors; 
} 

add_action('woocommerce_register_post', 'woocom_validate_extra_register_fields', 10, 3); 



//Save Fields 
function woocom_save_extra_register_fields($customer_id) { 
    if (isset($_POST['billing_phone'])) { 
       // Phone input filed which is used in WooCommerce 
       update_user_meta($customer_id, 'billing_phone', sanitize_text_field($_POST['billing_phone'])); 
      } 
     if (isset($_POST['billing_first_name'])) { 
      //First name field which is by default 
      update_user_meta($customer_id, 'first_name', sanitize_text_field($_POST['billing_first_name'])); 
      // First name field which is used in WooCommerce 
      update_user_meta($customer_id, 'billing_first_name', sanitize_text_field($_POST['billing_first_name'])); 
     } 
     if (isset($_POST['billing_last_name'])) { 
      // Last name field which is by default 
      update_user_meta($customer_id, 'last_name', sanitize_text_field($_POST['billing_last_name'])); 
      // Last name field which is used in WooCommerce 
      update_user_meta($customer_id, 'billing_last_name', sanitize_text_field($_POST['billing_last_name'])); 
     } 

} 
add_action('woocommerce_created_customer', 'woocom_save_extra_register_fields'); 




/* END Add Extra Registration Field in Woocommerce */ 

一切工作正常,但問題是,它接受dupliacte電話號碼。我如何使電話號碼字段唯一?任何想法將非常感激。

謝謝。

+0

JQuery的應該幫助你避免重複的值。 – jjj

回答

0

嘗試通過meta_value使用get_users函數,如果值存在執行驗證:

if (isset($_POST['billing_phone']) && empty($_POST['billing_phone'])) { 
      $validation_errors->add('billing_phone_error', __('<strong>Error</strong>: Mobile number is required!.', 'woocommerce')); 

     } 
if (isset($_POST['billing_phone'])) { 
    $hasPhoneNumber= get_users('meta_value='.$_POST['billing_phone']); 
    if (!empty($hasPhoneNumber)) { 
    $validation_errors->add('billing_phone_error', __('<strong>Error</strong>: Mobile number is already used!.', 'woocommerce')); 
    } 
} 
+0

非常感謝你buxbeatz ..你救了我的命:) –

相關問題