• Resolved hurab

    (@hurab)


    Hi i have added extra field to the woocommerce registration form “account number” my question is where can i see the extra field in backend?
    Please guide

Viewing 5 replies - 1 through 5 (of 5 total)
  • Can you list your code so that we can see what/how you added it to the functions file?

    Thread Starter hurab

    (@hurab)

    sure i used business bloomers functions
    /**
    * @snippet Add Ship to/ Account Number to My Account Register Form – WooCommerce
    * @how-to Watch tutorial @ https://businessbloomer.com/?p=19055
    * @sourcecode https://businessbloomer.com/?p=21974
    * @author Rodolfo Melogli
    * @credits Claudio SM Web
    * @compatible WC 3.5.2
    * @donate $9 https://businessbloomer.com/bloomer-armada/
    */

    ///////////////////////////////
    // 1. ADD FIELDS

    add_action( ‘woocommerce_register_form_start’, ‘bbloomer_add_account_woo_account_registration’ );

    function bbloomer_add_account_woo_account_registration() {
    ?>

    <p class=”form-row form-row-first”>
    <label for=”reg_billing_account_number”><?php _e( ‘Ship to/ Account number’, ‘woocommerce’ ); ?> <span class=”required”>*</span></label>
    <input type=”text” class=”input-text” name=”billing_account_number” id=”reg_billing_account_number” value=”<?php if ( ! empty( $_POST[‘billing_account_number’] ) ) esc_attr_e( $_POST[‘billing_account_number’] ); ?>” />
    </p>

    <div class=”clear”></div>

    <?php
    }

    ///////////////////////////////
    // 2. VALIDATE FIELDS

    add_filter( ‘woocommerce_registration_errors’, ‘bbloomer_validate_account_fields’, 10 );

    function bbloomer_validate_account_fields( $errors, $username, $email ) {
    if ( isset( $_POST[‘billing_account_name’] ) && empty( $_POST[‘billing_account_number’] ) ) {
    $errors->add( ‘billing_account_number_error’, __( ‘Error: account number is required!’, ‘woocommerce’ ) );
    $fields[‘billing_account_number’][‘maxlength’] = 6;
    }
    return $errors;
    }

    ///////////////////////////////
    // 3. SAVE FIELDS

    add_action( ‘woocommerce_created_customer’, ‘bbloomer_save_account_fields’ );

    function bbloomer_account_number_fields( $customer_id ) {
    if ( isset( $_POST[‘billing_account_number’] ) ) {
    update_user_meta( $customer_id, ‘billing_account_number’, sanitize_text_field( $_POST[‘billing_account_number’] ) );
    update_user_meta( $customer_id, ‘account_number’, sanitize_text_field($_POST[‘billing_account_number’]) );
    }
    }
    and for the admin backend
    /* to display the custom field content in the admin area */

    function fyndaa_manage_users_custom_column( $output, $column_key, $user_id ) {
    switch ( $column_key ) {

    case ‘user_accountnumber’:
    $value = get_user_meta( $user_id, ‘user_accountnumber’, true );
    return $value;
    break;
    default: break;
    }

    // if no column slug found, return default output value
    return $output;
    }
    please guide

    Much thanks

    Thread Starter hurab

    (@hurab)

    update: just in case if anyone is looking for it
    // Display a field in Registration / Edit account
    add_action( ‘woocommerce_register_form_start’, ‘display_account_registration_field’ );
    add_action( ‘woocommerce_edit_account_form_start’, ‘display_account_registration_field’ );
    function display_account_registration_field() {
    $user = wp_get_current_user();
    $value = isset($_POST[‘billing_account_number’]) ? esc_attr($_POST[‘billing_account_number’]) : $user->billing_account_number;
    ?>
    <p class=”woocommerce-form-row woocommerce-form-row–wide form-row form-row-wide”>
    <label for=”reg_billing_account_number”><?php _e( ‘Ship to/ Account number’, ‘woocommerce’ ); ?> <span class=”required”>*</span></label>
    <input type=”text” maxlength=”6″ class=”input-text” name=”billing_account_number” id=”reg_billing_account_number” value=”<?php echo $value ?>” />
    </p>
    <div class=”clear”></div>
    <?php
    }

    // registration Field validation
    add_filter( ‘woocommerce_registration_errors’, ‘account_registration_field_validation’, 10, 3 );
    function account_registration_field_validation( $errors, $username, $email ) {
    if ( isset( $_POST[‘billing_account_number’] ) && empty( $_POST[‘billing_account_number’] ) ) {
    $errors->add( ‘billing_account_number_error’, __( ‘Error: account number is required!’, ‘woocommerce’ ) );
    }
    return $errors;
    }

    // Save registration Field value
    add_action( ‘woocommerce_created_customer’, ‘save_account_registration_field’ );
    function save_account_registration_field( $customer_id ) {
    if ( isset( $_POST[‘billing_account_number’] ) ) {
    update_user_meta( $customer_id, ‘billing_account_number’, sanitize_text_field( $_POST[‘billing_account_number’] ) );
    }
    }

    // Save Field value in Edit account
    add_action( ‘woocommerce_save_account_details’, ‘save_my_account_billing_account_number’, 10, 1 );
    function save_my_account_billing_account_number( $user_id ) {
    if( isset( $_POST[‘billing_account_number’] ) )
    update_user_meta( $user_id, ‘billing_account_number’, sanitize_text_field( $_POST[‘billing_account_number’] ) );
    }

    // Display field in admin user billing fields section
    add_filter( ‘woocommerce_customer_meta_fields’, ‘admin_user_custom_billing_field’, 10, 1 );
    function admin_user_custom_billing_field( $args ) {
    $args[‘billing’][‘fields’][‘billing_account_number’] = array(
    ‘label’ => __( ‘Ship to/ Account number’, ‘woocommerce’ ),
    ‘description’ => ”,
    ‘custom_attributes’ => array(‘maxlength’ => 6),
    );
    return $args;
    }

    but i am still stuck with admin area please guide
    Much thanks

    I’m not sure your going to see anything extra in the backend with this. This is strictly front end fields. The First & Last name are already part of Woocommerce and WP in general. They just don’t offer that in the registration process. Users have to fill on all that later.

    The user’s name however will be added automatically to their account which you’ll find under Users. You’ll find the user by First & Last Name and or their Email.

    Hope that helps.

    Plugin Support Hannah S.L.

    (@fernashes)

    Automattic Happiness Engineer

    We haven’t heard back from you in a while, so I’m going to mark this as resolved – if you have any further questions, you can start a new thread.

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘extra field not appearing in backend’ is closed to new replies.