Otomatik Gönderi Mekanizmasını Özelleştirme
Kargo Entegratör modülünün otomatik gönderi oluşturma davranışını aşağıdaki filtreler yardımıyla projenize özel hale getirebilirsiniz.
1. Otomatik Gönderi Tetikleyici Durumları Genişletme
Varsayılan olarak modül belirli sipariş durumlarında (örneğin: processing) tetiklenir. Eğer özel bir sipariş durumu (Custom Order Status) kullanıyorsanız veya "Beklemede" (on-hold) olan siparişlerin de otomatik kargoya iletilmesini istiyorsanız bu filtreyi kullanabilirsiniz.
add_filter('gcargo_auto_shipment_statuses', function($statuses) {
$statuses[] = array(
'text' => 'Beklemede',
'value' => 'on-hold',
);
return $statuses;
});

2. Otomatik Gönderi Zaman aşımı (Timeout) Listesini Genişletme
Sipariş durumu değiştikten ne kadar süre sonra Kargo Entegratör API'sine veri gönderileceğini seçtiğiniz listeyi bu filtre ile özelleştirebilirsiniz. Bu, özellikle sipariş üzerinde son kontrolleri yapmak için zaman kazanmak isteyen mağazalar için idealdir.
add_filter('gcargo_auto_shipment_timeouts', function($timeouts) {
$timeouts[] = array(
'text' => '1 Saat',
'value' => 3600,
);
return $timeouts;
});
Kargo Entegratör Verilerini Manipüle Etme
gcargo_shipment_map_wc_order_request ve gcargo_returned_map_wc_order_request filtreleri, sipariş verilerini Woo'dan alıp Kargo Entegratör API'sine iletilmeden hemen önce tetiklenir. Bu filtreler sayesinde, gönderi etiketi oluşturulmadan önce ürün adlarını, desi bilgilerini veya alıcı detaylarını programatik olarak değiştirebilirsiniz.
Aşağıdaki kod bloğu; ürün adını düzenleme, özel desi hesaplama ve kargo verisine müdahale etme gibi senaryoları kapsar:
add_filter('gcargo_shipment_map_wc_order_request', function($gcargo_request, $order) {
// Ürün satırlarını döngüye alarak başlıkları güncelle
$gcargo_request['lines'] = array_map(function($line) {
// Sipariş öğesi meta verisini al
$sample_meta_value = wc_get_order_item_meta($line['platform_id'], '_my_sample_meta_key', true);
// Ürün adına meta değerini ekle
if (!empty($sample_meta_value)) {
$line['title'] = $line['title'] . ' - ' . $sample_meta_value;
}
return $line;
}, $gcargo_request['lines']);
// Kapıda ödeme (COD) ise tahsil edilecek tutara 100 TL ekle
if ($order->get_payment_method() === 'cod') {
$gcargo_request['total'] = $order->get_total() + 100;
}
return $gcargo_request;
}, 10, 2);