Я попытался реализовать пользовательское поле на странице регистрации WooCommerce на моем сайте и отлично работает, но если вы хотите изменить эту дату на My Account page, изменения не сохраняются. Похоже, я что-то пропустил, чтобы не переводить данные в базу данных. Это код для настраиваемого поля:Wordpress-Update Дата рождения в учетной записи 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
я судимый заменить строку с моим в этом коде: 'функция my_woocommerce_save_account_details ($ user_id) { \t update_user_meta ($ customer_id, 'billing_birthdate', htmlentities ($ _POST [ 'РОЖДЕНИЯ'])); } // end func' , но при попытке изменить дату рождения ничего не изменилось. – Dora