Сохраните сумму всех пользовательских полей конкретного элемента заказа как метаданные заказа в WooCommerce - PullRequest
2 голосов
/ 27 апреля 2019

После моего предыдущего вопроса " Сохранить сумму пользовательских полей элемента заказа WooCommerce как новые метаданные " , при размещении заказа некоторые пользовательские метаданные элемента заказа quantity,assemblycost и calculated_field (это значение равно quantity x assemblycost) .

Как сохранить в качестве метаданных пользовательского заказа сумму всех элементов заказа calculated_field значений?

Например, пример заказа будет выглядеть так:

Product A:
assemblycost: 10
quantity: 2
calculated_field: 20

Product B:
assemblycost: 15
quantity: 2
calculated_field: 30

Product C: 
no assemblycost, quanity or calculated_field - custom fields present. 

Product D: 
assemblycost: 30
quantity: 2
calculated_field: 60

Я хочу создать новое настраиваемое поле для заказа sum_calculated_fields и установить его равным суммеcalculated_fields в порядке, поэтому в приведенном выше примере оно будет равно:

20 + 30 + 60 = 110.

1 Ответ

3 голосов
/ 27 апреля 2019

Обновлено: Вот способ суммирования всего элемента заказа calculated_fields пользовательского поля и сохранения этой суммы в виде метаданных пользовательского заказа:

add_action( 'woocommerce_checkout_create_order', 'action_checkout_create_order_callback', 10, 2 );
function action_checkout_create_order_callback( $order, $data ) {
    $calculated_fields_sum = 0; // Initializing

    // Loop Through order items
    foreach ( $order->get_items() as $item ) {
        if( $value = $item->get_meta('calculated_field') ) {
            $calculated_fields_sum += $value;
        }
    }
    // Update order meta data
    if( $calculated_fields_sum > 0 ) {
        $order->update_meta_data( 'calculated_fields_sum', $calculated_fields_sum );
    }
}

Код входит в функцию.PHP-файл вашей активной дочерней темы (или активной темы).Это должно работать.

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