Füge ein benutzerdefiniertes Feld zum Auschecken und zu den Benutzerdaten von my_account bei der Registrierung hinzu
Ich habe eine Woocommerce-Site, die ich gerade erst baue, und ich möchte das Geburtsdatum des Benutzers zur Benutzermethode in der Datenbank hinzufügen und es im wp-admin unter seinem Profil anzeigen.
Ich habe nur begrenzte Erfahrung mit PHP.
Ich habe aus den Woocommerce-Dokumenten gezogenHie um es an der Kasse anzuzeigen, was es richtig macht.
Die Woocommerce-Dokumentation zeigt Ihnen, wie Sie die Informationen zur Bestellung hinzufügen, jedoch nicht zum Benutzerkonto. Es wird korrekt zur Bestellung hinzugefügt, aber nicht zum Konto.
Hier ist was ich bisher habe:
/**
* 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>';
}
Ich erhalte diesen Fehler auch auf der Benutzerinformationsseite:
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
Ich habe auch versucht, dies anstelle meiner Version des Benutzerupdates Meta.
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'] ) );
}
}