Отображение пользовательского столбца с пользовательской мета на странице заказов woocommerce - PullRequest
1 голос
/ 11 марта 2020

в некотором затруднении здесь. Я уже пару дней пытаюсь получить свои данные, которые я собрал из пользовательского поля в регистрационной форме woocommerce, чтобы вставить в метаданные пользователя в базе данных. Код для формы:

//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'] ) );
    }

}

Теперь я хочу взять данные из таблицы и отобразить их на странице заказа woocommerce в отдельном столбце, чтобы я мог увидеть номер morello, не имея искать информацию о клиенте вручную. Вот мой код для этого:

/**
 * 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 );

Это работает как задумано, но продолжает отображать цитату «что-то еще» - код создает столбец в правильном месте, но не заполняет его morello_account_number. Я что-то пропустил? Помощь будет очень признательна - заранее спасибо.

1 Ответ

1 голос
/ 11 марта 2020

В вашем коде есть некоторые ошибки. Код, который будет работать, если используется с правильным хуком.

Например, вы используете код 'backend' в 'frontend'.

Имейте в виду, что если вы добавите новое поле в регистрацию В этом случае лучше всего возвращать это поле в нескольких местах, чтобы пользователь мог впоследствии его настроить.

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

Часть 3: Дисплей Поле @ Профиль пользователя (admin) и Моя учетная запись Редактировать Страница (интерфейс)

/**
 * 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...