Как обеспечить правильное обновление пользовательских полей учетной записи WC - PullRequest
0 голосов
/ 26 июня 2019

Я добавил несколько настраиваемых полей на свою страницу 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, но когда я пытаюсь отредактировать и сохранить, они возвращаются к старому значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...