如何确保自定义WC帐户字段正确更新

时间:2019-06-26 12:16:40

标签: wordpress woocommerce gravity-forms-plugin user-registration

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

0 个答案:

没有答案