wc_add_order_item_meta() – добавляем метаданные позиции заказа

Добавляет метаданные для позиций заказа, возвращает либо ID строки метаданных в базе данных, либо false, если метаданные добавлены не были.

Читайте отдельный урок про позиции заказа.

wc_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique = false )

Параметры функции wc_add_order_item_meta()

$item_id
(целое число) ID позиции заказа.
$meta_key
(строка) Ключ.
$meta_value
(строка) Значение.
$unique
(логическое) Должна ли функция добавлять метаданные с указанным ключом, если они уже присутствуют в базе данных. По умолчанию false – метаданные будут добавляться, true – не будут, каждый ключ будет уникальным.

Зарезервированные ключи

У метаданных позиций заказа уже имеется какой-то набор предопределённых ключей, имеющих определённое назначение. Что это за ключи – зависит от типа позиции товара.

Например для типа line_item (товары и вариации) набор ключей будет следующим:

КлючОписание
_product_idID товара, с которым ассоциирована позиция заказа
_variation_idID вариации товара, с которой ассоциирована позиция заказа
_line_subtotalЦена одной позиции товара
_qtyКоличество позиций товара
_line_totalОбщая стоимость

Ключи для типа shipping:

КлючОписание
costСтоимость доставки
method_idТип метода доставки, например «flat_rate»
instance_idID метода доставки

Ключи для типа fee:

КлючОписание
_fee_amountСумма сбора

Пример

В качестве примера можем добавить позицию заказа типа line_item, которая будет прилинкована к определённой вариации.

// допустим мы будем добавлять позиции в заказ с ID=5
$order_id = 5;
 
$order_item_id = wc_add_order_item( $order_id, array( 'order_item_name' => 'Футболка', 'order_item_type' => 'line_item' ) );
 
wc_add_order_item_meta( $order_item_id, '_product_id', 13, true );
wc_add_order_item_meta( $order_item_id, '_variation_id', 53, true );
wc_add_order_item_meta( $order_item_id, '_line_subtotal', 10, true ); // цена
wc_add_order_item_meta( $order_item_id, '_qty', 2, true ); // количество
wc_add_order_item_meta( $order_item_id, '_line_total', 20, true ); // стоимость
 
$order = new WC_Order( $order_id );
$order->calculate_totals(); // пересчитываем стоимость заказа

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.