我已经在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帐户字段中,但是当我尝试编辑和保存时,它返回到原来的值。