Ek Eklenti ve Ürün Seçeneklerini Barkod Çıktısına Yansıtma
Mağazanızda ürün ek seçenekleri (Product Add-Ons, Extra Product Options), kişiselleştirme, hediye paketi, işleme/gravür gibi alanlar sunan bir eklenti kullanıyorsanız; müşterinin seçtiği bu değerler WooCommerce tarafında sipariş satırı meta verisinde saklanır ve varsayılan olarak Kargo Entegratör'e iletilmez.
Bu değerleri paketleme sırasında görebilmek için, ürün satırındaki custom_attributes alanına aktarabilirsiniz. Bu alana eklediğiniz anahtar / değer çiftleri, gönderiye ait barkod ve fiş PDF çıktılarında ilgili ürün satırının altında listelenir.
Barkod Çıktısına İletilen Veri Yapısı
Her ürün satırı (lines) aşağıdaki gibi serbest bir custom_attributes nesnesi kabul eder:
"lines": [
{
"title": "Deri Çanta",
"quantity": 3,
"platform_id": 1235,
"img": "https://dericanta.com/assets/ornek.png",
"sku": "DRCNT123",
"custom_attributes": {
"Renk": "Kırmızı",
"Boyut": "160 cm"
}
}
]
Anahtar isimleri sabit değildir; çıktıda görünmesini istediğiniz etiketi doğrudan siz belirlersiniz. Değerlerin kısa metinler olmasına dikkat edin, uzun metinler barkod çıktısında kırpılabilir.
Ek Seçenek Eklentilerinin Verisini Toplu Aktarma
Ek seçenek eklentilerinin büyük bölümü, müşterinin seçimlerini sipariş satırı meta verisi olarak kaydeder ve bu veriler sipariş detay ekranında ürün adının altında görüntülenir. Aşağıdaki örnek, sipariş ekranında görünen tüm bu satırları olduğu gibi barkod çıktısına taşır:
add_filter('gcargo_shipment_map_wc_order_request', function ($gcargo_request, $order) {
$gcargo_request['lines'] = array_map(function ($line) use ($order) {
// platform_id -> WooCommerce sipariş satırı (order item) ID'si
$item = $order->get_item($line['platform_id']);
if (!$item) {
return $line;
}
// Sipariş ekranında görünen tüm seçenek satırları (varyasyon + ek seçenekler)
foreach ($item->get_formatted_meta_data('_') as $meta) {
$baslik = wp_strip_all_tags($meta->display_key);
$deger = wp_strip_all_tags($meta->display_value);
if (!empty($baslik) && !empty($deger)) {
$line['custom_attributes'][$baslik] = $deger;
}
}
return $line;
}, $gcargo_request['lines']);
return $gcargo_request;
}, 10, 2);
Notlar
-
Yalnızca belirli bir alanı aktarmak isterseniz, meta anahtarını
wc_get_order_item_meta($line['platform_id'], '_meta_anahtari', true)ile doğrudan okuyupcustom_attributesiçine ekleyebilirsiniz. -
İade gönderilerinde aynı yapıyı
gcargo_returned_map_wc_order_requestfiltresi ile kullanabilirsiniz. -
custom_attributeszorunlu bir alan değildir; gönderilmediğinde barkod çıktısında ek satır oluşmaz.