2017-02-09 47 views
1

我試圖將自定義字段實施到我的網站上的WooCommerce註冊頁面,並且效果很好,但如果要將該日期修改爲My Account page,則不會保存更改。看起來我錯過了某些不會將數據傳輸到數據庫的地方。這是自定義字段代碼:WordPress的更新Woocommerce帳戶的出生日期

<p class="form-row form-row-last"> 
<label for="reg_billing_birthdate"><?php _e('Date of Birth', 'woocommerce'); ?> <span class="required">*</span></label> 
<input type="text" class="input-text" name="billing_birthdate" id="reg_billing_birthdate" value="<?php if (! empty($_POST['billing_birthdate'])) esc_attr_e($_POST['billing_birthdate']); ?>" /> 
</p> 

列billing_birthdate被創建成wp_usermeta表,但我加入這個代碼也融入到functions.php的主題:

和驗證碼進行數據的數據庫..

/** 
* Below code save extra fields. 
*/ 
    function wooc_save_extra_register_fields($customer_id) { 
     if (isset($_POST['billing_birthdate'])) { 
     // Billing Address field which is by default 
     update_user_meta($customer_id, 'last_name', sanitize_text_field( $_POST['billing_birthdate'])); 
     // Last name field which is used in WooCommerce 
     update_user_meta($customer_id, 'billing_birthdate',  sanitize_text_field($_POST['billing_birthdate'])); 
    } 

} 

我還將此代碼添加到了functions.php文件中,以便能夠將該字段編輯到編輯帳戶頁面中。

/** 
    * To display additional field at My Account page 
    * Once member login: edit account 
    */ 
add_action('woocommerce_edit_account_form', 'my_woocommerce_edit_account_form'); 

function my_woocommerce_edit_account_form() { 

$user_id = get_current_user_id(); 
$user = get_userdata($user_id); 

if (!$user) 
    return; 

    $birthdate = get_user_meta($user_id, 'birthdate', true); 

?> 
    <fieldset> 

    <p class="form-row form-row-thirds"> 
     <label for="birthdate">Birth date:</label> 
     <input type="text" name="birthdate" value="<?php echo esc_attr( $birthdate); ?>" class="input-text" /> 
     <br /> 
     <span style="font-size: 12px;">(Birth date format: DD-MM-YYYY. eg:  31-12-2005)</span> 
    </p> 
    </fieldset> 

    <?php 

    } // end func 


    /** 
    * This is to save user input into database 
    * hook: woocommerce_save_account_details 
    */ 
    add_action('woocommerce_save_account_details',  'my_woocommerce_save_account_details'); 

    function my_woocommerce_save_account_details($user_id) { 
    update_user_meta($user_id, 'birthdate', htmlentities($_POST[ 'birthdate' ])); 
    } // end func 

所以我的問題是,什麼是我的錯誤我編輯那場進入我的賬戶頁面後,更改不會反映到儀表板。

回答

2

我發現,您在插入數據時正在更新名爲'billing_birthdate'的字段。但是當你正在編輯你正在更新字段'出生日期'。 更新:

update_user_meta($customer_id, 'billing_birthdate',htmlentities($_POST['birthdate'])); 

希望這會對你有用。

+0

感謝您的回覆。我想問一下,你建議在哪裏取代這一行? – Dora

+1

你需要替換update_user_meta($ user_id,'birthdate',htmlentities($ _POST ['birthdate']));這條線與給定的行:update_user_meta($ customer_id,'billing_birthdate',htmlentities($ _POST ['birthdate'])); – Tristup

+0

我tryed與我在此代碼來替換你的行: '函數my_woocommerce_save_account_details($ user_ID的){ \t update_user_meta($ CUSTOMER_ID, 'billing_birthdate',ヶ輛($ _ POST [ '生日'])); } // end func' 但是當試圖修改出生日期時,沒有任何變化。 – Dora