gruene-seele/dev/partnercenter-api/public/woocommerce/dhl-label.php
Kevin Adametz 4f9dca88de Connector-Plugin 1.4.0: DHL-Label an das Partnercenter übertragen
compose_label_data() liest das Meta-Feld _pr_shipment_dhl_label_tracking
(DHL for WooCommerce); write_order_items() schickt Label-URL + Sendungsnummer
beim wp/order-Transfer mit. Neuer Listener auf pr_save_dhl_label_tracking
reicht Labels nach, die erst nach der Übertragung erstellt werden (nur bei
bereits übertragenen Bestellungen, via neuem wp/label-Endpoint).
Connector-Doku auf die konkrete Umsetzung aktualisiert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 11:42:30 +00:00

59 lines
1.8 KiB
PHP

<?php
/*
* Forward DHL labels created by the "DHL for WooCommerce" plugin.
*
* Normal case: the label is created BEFORE the order is forwarded - then
* write_order_items() sends label + tracking number along with the order.
* This listener covers the other case: the label is created (or re-created)
* AFTER the order has already been forwarded to the PARTNERCENTER.
*/
if (! defined('ABSPATH')) {
exit;
}
class PARTNERCENTER_API_WooCommerce_DHL_Label_Class
{
/**
* PARTNERCENTER_API_WooCommerce_DHL_Label_Class constructor.
*/
public function __construct()
{
// Listen to label creation by "DHL for WooCommerce"
// (fires once per tracking number, after the label meta was saved)
add_action('pr_save_dhl_label_tracking', [$this, 'pr_save_dhl_label_tracking'], 20, 2);
}
/**
* Push a freshly created DHL label to PARTNERCENTER.
*
* @param array $tracking_details Carrier, tracking number, ship date, tracking URL
*
* @since 1.4.0
*/
public function pr_save_dhl_label_tracking(int $order_id, $tracking_details)
{
// Only orders that have already been forwarded to the PARTNERCENTER -
// otherwise the label is sent along with the order transfer anyway
if (empty(get_post_meta($order_id, '_partnercenter_api_order_fulfillment_forwarded', true))) {
return;
}
// Load API
$partnercenter = apply_filters('PARTNERCENTER_API', false);
if ($partnercenter === false) {
return;
}
// Push label + tracking number to PARTNERCENTER
// (endpoint is idempotent - repeated calls just overwrite)
$partnercenter->send_order_label($order_id);
}
}
new PARTNERCENTER_API_WooCommerce_DHL_Label_Class;