columna personalizada pantalla con meta de usuario personalizada en la página de pedidos WooCommerce

Garwinn:

en un poco de un dilema aquí. He estado tratando durante un par de días ahora para obtener los datos de mi, que he recogido de un campo personalizado en forma de registro WooCommerce para insertar en meta de usuario en la base de datos. El código para el formulario es:

//Addition of morello Account Number to reg page
add_action( 'woocommerce_register_form', 'add_register_form_field' );

function add_register_form_field(){

    woocommerce_form_field(
        'morello_account_number',
        array(
            'type'        => 'text',
            'required'    => true, // required field?
            'label'       => 'morello Account Number:'
        ),
        ( isset($_POST['morello_account_number']) ? $_POST['morello_account_number'] : '' )
    );

}
add_action( 'woocommerce_created_customer', 'save_register_fields' );

function save_register_fields( $customer_id ){

    if ( isset( $_POST['morello_account_number'] ) ) {
        update_user_meta( $customer_id, 'morello_account_number', wc_clean( $_POST['morello_account_number'] ) );
    }

}

Ahora quiero agarrar los datos de la tabla y mostrarlo en la página Orden de WooCommerce en una columna separada, por lo que a continuación, puede ver el número Morello sin tener que buscar manualmente los datos del cliente. Aquí está mi código hasta ahora para esto:

/**
 * Add columns
 */
function morello_account_number_column( $columns ) {
    $columns['morello_account_number'] = "morello Account Number";
    return $columns;
}
add_filter('manage_edit-shop_order_columns', 'morello_account_number_column', 10, 1 );

/**
 * Populate columns
 */
function morello_placeholder( $column, $post_id ) {
    if( $column == 'morello_account_number' ) {
        // https://developer.wordpress.org/reference/functions/get_post_meta/
        $a_a_n = get_user_meta( $user_id, 'morello_account_number', true );

        // Value is found
        if ( !empty($a_a_n) ) {
            echo $a_a_n;    
        } else {
            echo 'something else';
        }
    }
}
add_filter( 'manage_shop_order_posts_custom_column', 'morello_placeholder', 10, 2 );

Este funciona como está previsto, pero sigue mostrando la "otra cosa" cita - el código crea la columna en el lugar correcto, pero no se rellenará con el morello_account_number. ¿Me estoy perdiendo de algo? La ayuda sería enormemente apreciada - gracias por adelantado.

7uc1f3r:

Hay algunos errores en el código. El código que funcionaría si se utiliza con el gancho correcto.

Por ejemplo, se utiliza código 'back-end' en el 'frontend'.

Tenga en cuenta que si se agrega un nuevo campo al formulario de inscripción, lo mejor es tener este campo devuelto en varios lugares, por lo que el usuario puede ajustar después.

Ver: https://businessbloomer.com/woocommerce-add-select-field-account-register-form/

Parte 3: Pantalla campo @ perfiles de usuario (admin) y Mi Cuenta Editar página (parte delantera)

/**
 * Add morello account number to reg page
 */
function add_register_form_field() {
    ?>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"> 
        <label for="reg_morello_account_number"><?php _e( 'Morello Account Number', 'woocommerce' ); ?> <span class="required">*</span></label> 
        <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="morello_account_number" id="reg_morello_account_number" value="<?php if ( ! empty( $_POST['morello_account_number'] ) ) echo esc_attr( $_POST['morello_account_number'] ); ?>" /> 
    </p> 
    <?php
}
add_action( 'woocommerce_register_form', 'add_register_form_field' );

/**
 * Save morello account number
 */
function save_register_fields( $customer_id, $new_customer_data, $password_generated ) {
    if ( isset( $_POST['morello_account_number'] ) ) {
        update_user_meta( $customer_id, 'morello_account_number', wc_clean( $_POST['morello_account_number'] ) );
    }

}
add_action( 'woocommerce_created_customer', 'save_register_fields', 10 , 3 );

/**
 * Add columns
 */
function morello_account_number_column( $columns ) {
    $columns['morello_account_number'] = "morello Account Number";
    return $columns;
}
add_filter('manage_edit-shop_order_columns', 'morello_account_number_column', 10, 1 );

/**
 * Populate columns
 */
function morello_placeholder( $column, $post_id ) {
    $order = new WC_Order( $post_id );

    // Get user id
    $user_id = $order->get_user_id();

    if( $column == 'morello_account_number' ) {
        $a_a_n = get_user_meta( $user_id, 'morello_account_number', true );

        // Value is found
        if ( !empty($a_a_n) ) {
            echo $a_a_n;    
        } else {
            echo 'something else';
        }
    }
}
add_filter( 'manage_shop_order_posts_custom_column', 'morello_placeholder', 10, 2 );

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=275292&siteId=1
Recomendado
Clasificación