Добавьте пользовательское поле для оформления заказа и в my_account информацию о пользователе при регистрации

У меня есть сайт woocommerce, который я создаю, и я хочу добавить дату рождения пользователя к метам пользователя в базе данных, а также отобразить ее в wp-admin под своим профилем.

У меня ограниченный опыт работы с PHP.

Я вытащил из Woocommerce документовВот отображать его на кассе, что он делает правильно.

Документы Woocommerce показывают, как добавить его в информацию о заказе, но не в саму учетную запись пользователя. Он правильно добавляется в заказ, но не в аккаунт.

Вот что у меня так далеко:

/**
 * Add the field to the checkout
 */
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );

function my_custom_checkout_field( $checkout ) {

    echo '<div id="my_custom_checkout_field">';

    woocommerce_form_field( 'birthdate', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Date of Birth'),
        'placeholder'   => __('mm/dd/yyyy'),
        ), $checkout->get_value( 'birthdate' ));

    echo '</div>';

}

/**
 * Process the checkout
 */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['birthdate'] )
        wc_add_notice( __( 'Please enter your date of birth.' ), 'error' );
}

/**
 * update order meta with field value
 */

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );


function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['birthdate'] ) ) {
        update_post_meta( $order_id, 'Birthdate', sanitize_text_field( $_POST['birthdate'] ) );
    }
}

/**
 * update user meta with birthdate
 */

add_action ( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action ( 'edit_user_profile_update', 'my_save_extra_profile_fields' );

function my_save_extra_profile_fields( $user_id )
{
    if ( ! empty( $_POST['birthdate'] ) ) {
        update_usermeta( $user_id, 'Birthdate', sanitize_text_field( $_POST['birthdate'] ) );
    }
}


/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
add_action ( 'show_user_profile', 'my_custom_checkout_field_display_admin_order_meta' );
add_action ( 'edit_user_profile', 'my_custom_checkout_field_display_admin_order_meta' );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('Birthdate').':</strong> ' . get_post_meta( $order->id, 'Birthdate', true ) . '</p>';
}

Я также получаю эту ошибку на странице информации пользователя:

Notice: WP_User->id was called with an argument that is deprecated since 
version 2.1.0! Use WP_User->ID instead. in 
/Applications/MAMP/htdocs/tst_dev/wp-includes/functions.php on line 3891

Я также попробовал это вместо моей версии мета обновления пользователя.

add_action( 'user_register', 'my_custom_update_user');

function my_custom_update_user( $user_id )
{        
    if ( $user_id != 0 ) {             // check if user is not a guest
            update_usermeta( $user_id, 'Birthdate', sanitize_text_field( $_POST['birthdate'] ) );
        }
}

Ответы на вопрос(2)

Ваш ответ на вопрос