Отображение настраиваемого поля оплаты в Woocommerce Admin, Заказы и электронные письма - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно отобразить свои настраиваемые поля оформления заказа на странице заказов администратора, спасибо и уведомления по электронной почте.

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

С Woocommerce отображает данные настраиваемого поля в деталях заказа администратора Я пытаюсь отобразить сохраненное введенное значение настраиваемого поля.

Вот код, который у меня есть:

// Display field value on the order edit page
add_action( 'woocommerce_admin_order_data_after_billing_address', 
    'show_Ean_nummer_in_admin', 10, 1 );
    function show_Ean_nummer_in_admin ( $order ){
    // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );

    // Display "ean" custom field value
    echo '<p>'.__('EAN', 'woocommerce') . $udfyld_ean . '</p>';
} 

// Display field value on the order emails  
add_action( 'woocommerce_email_order_details', 'ean_in_emails' 50, 1 );
function ean_in_emails( $order, $sent_to_admin, $plain_text, $email ){
      // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );

    // Display "ean" custom field value
    echo '<p>'.__('EAN', 'woocommerce') . $udfyld_ean . '</p>';
}

// Display field value in thank you
add_action( 'woocommerce_thankyou', 'ean_in_thankyou' );
function ean_in_thankyou() {
    // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );
    // Display "ean" custom field value
    echo '<p>'.__('EAN', 'woocommerce') . $udfyld_ean . '</p>';
}  

Но он не работает.Поле добавляется в базу данных, но нигде не отображается:

metakey in database

Как правильно отобразить поле?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Следующий код отобразит значение вашего пользовательского поля «Udfyld EAN» в заказах и уведомлениях по электронной почте:

1) Чтобы отобразить это в отдельных страницах администратора заказа Woocommerce:

// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'custom_field_admin_display_order_meta', 10, 1 );
function custom_field_admin_display_order_meta( $order ){
    $business_address = get_post_meta( $order->get_id(), 'Business Address?', true );
    if( $udfyld_ean = $order->get_meta('_udfyld_ean') )
        echo '<p><strong>'.__('Udfyld EAN', 'woocommerce').': </strong> ' . $udfyld_ean . '</p>';
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

enter image description here

2) Чтобы отобразить это при получении Заказа, просмотра Заказа и уведомлений по электронной почте, вы будете использовать:

add_filter( 'woocommerce_get_order_item_totals', 'add_udfyld_ean_row_to_order_totals', 10, 3 );
function add_udfyld_ean_row_to_order_totals( $total_rows, $order, $tax_display ) {;

    $new_total_rows = [];

    foreach($total_rows as $key => $total ){
        $new_total_rows[$key] = $total;

        if( $order->get_meta('_udfyld_ean') && 'payment_method' === $key ){
            $new_total_rows['udfyld_ean'] = array(
                'label' => __('Udfyld EAN', 'woocommerce'),
                'value' => esc_html( $order->get_meta('_udfyld_ean') ),
            );
        }
    }

    return $new_total_rows;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Проверено и работает.

enter image description here

enter image description here

0 голосов
/ 21 декабря 2018

Вы используете следующий код для извлечения значения _udfyld_ean:

get_post_meta( $order_id, '_udfyld_ean', true );

Но проблема в том, что вы нигде не определили $order_id.Вам нужно будет передать действительное значение идентификатора заказа, чтобы получить ожидаемый результат.

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