Я добавил несколько настраиваемых полей на свою страницу WC / my-account / edit-account / и заполняю эти поля с помощью дополнения регистрации учетной записи пользователя Gravity Forms. Я не могу обновить поля, если я изменяю содержимое на странице учетной записи.
Я успешно добавил те же поля на страницы профиля пользователя WP, и я попытался повторить этот метод с помощью WC. Я подозреваю, что использую неправильные действия.
/**
* ADD CUSTOM FIELDS TO WP AND WC ACCOUNT PAGES - FOR SAVING VEHICLE DATA
*/
add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
add_action( 'woocommerce_edit_account_form', 'no2_wc_fields', 10 );
// Add fields to WP User Profiles
function my_show_extra_profile_fields( $user ) { ?>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<th><label for="vehicle_make">Vehicle make and model</label></th>
<td>
<input type="text" name="u_vmake" id="u_vmake" value="<?php echo esc_attr( get_the_author_meta( 'u_vmake', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">blah</span>
</td>
</tr>
<tr>
<th><label for="vehicle_make">Vehicle registration</label></th>
<td>
<input type="text" name="u_vreg" id="u_vreg" value="<?php echo esc_attr( get_the_author_meta( 'u_vreg', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">blah</span>
</td>
</tr>
</table>
<?php }
// Save field data to accout meta
add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
add_action( 'woocommerce_update_customer', 'my_save_extra_profile_fields' );
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
// Copy and paste this line for additional fields. Make sure to change field IDs.
update_usermeta( $user_id, 'u_vmake', $_POST['u_vmake'] );
update_usermeta( $user_id, 'u_vreg', $_POST['u_vreg'] );
}
// Add fields to WC My Account - Account details page
function no2_wc_fields( $user ) { ?>
<h3>Extra profile information</h3>
<p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
<label for="vehicle_make">Vehicle make and model</label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="u_vmake" id="u_vmake" value="<?php echo esc_attr( get_the_author_meta( 'u_vmake', $user->ID ) ); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-last">
<label for="vehicle_reg">Vehicle registration</label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="u_vreg" id="u_vreg" value="<?php echo esc_attr( get_the_author_meta( 'u_vreg', $user->ID ) ); ?>" />
</p>
<div class="clear"></div>
<?php }
Я могу успешно добавить данные из моей гравитационной формы и отредактировать их из профиля пользователя WP. Затем я вижу, что эти данные появляются в полях учетной записи WC, но когда я пытаюсь отредактировать и сохранить, они возвращаются к старому значению.