2017-02-09 5 views
1

Я попытался реализовать пользовательское поле на странице регистрации 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 

Так что мой вопрос, где моя ошибка моя после редактирования этого поля в моем счету страницу, изменения не отражаются в учетной записи приборной панели.

ответ

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

я судимый заменить строку с моим в этом коде: 'функция my_woocommerce_save_account_details ($ user_id) { \t update_user_meta ($ customer_id, 'billing_birthdate', htmlentities ($ _POST [ 'РОЖДЕНИЯ'])); } // end func' , но при попытке изменить дату рождения ничего не изменилось. – Dora