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
所以我的問題是,什麼是我的錯誤我編輯那場進入我的賬戶頁面後,更改不會反映到儀表板。
感謝您的回覆。我想問一下,你建議在哪裏取代這一行? – Dora
你需要替換update_user_meta($ user_id,'birthdate',htmlentities($ _POST ['birthdate']));這條線與給定的行:update_user_meta($ customer_id,'billing_birthdate',htmlentities($ _POST ['birthdate'])); – Tristup
我tryed與我在此代碼來替換你的行: '函數my_woocommerce_save_account_details($ user_ID的){ \t update_user_meta($ CUSTOMER_ID, 'billing_birthdate',ヶ輛($ _ POST [ '生日'])); } // end func' 但是當試圖修改出生日期時,沒有任何變化。 – Dora