Automattic\WooCommerce\Admin\Features\Fulfillments
OrderFulfillmentsRestController::maybe_track_tracking_added
Track fulfillment_tracking_added if tracking information was added or changed.
For new fulfillments ($changes is empty), fires whenever a tracking number is present. For updates, only fires when tracking-related meta (_tracking_number, _shipment_provider, or _tracking_url) actually changed.
Method of the class: OrderFulfillmentsRestController{}
No Hooks.
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->maybe_track_tracking_added( $fulfillment, $request, $changes ): void;
- $fulfillment(Fulfillment) (required)
- The fulfillment object (after save).
- $request(WP_REST_Request) (required)
- The original request.
- $changes(array)
- The changes from Fulfillment::get_changes(), empty for creates.
Default:array()
OrderFulfillmentsRestController::maybe_track_tracking_added() OrderFulfillmentsRestController::maybe track tracking added code WC 10.8.1
private function maybe_track_tracking_added( Fulfillment $fulfillment, WP_REST_Request $request, array $changes = array() ): void {
$tracking_number = $fulfillment->get_tracking_number();
if ( empty( $tracking_number ) ) {
return;
}
// For updates, only track when tracking-related meta actually changed.
if ( ! empty( $changes ) ) {
$meta_changes = $changes['meta_data'] ?? array();
$tracking_changed = array_key_exists( '_tracking_number', $meta_changes )
|| array_key_exists( '_shipment_provider', $meta_changes )
|| array_key_exists( '_tracking_url', $meta_changes );
if ( ! $tracking_changed ) {
return;
}
}
$source = $this->check_request_source( $request );
$shipping_option = $fulfillment->get_meta( '_shipping_option', true );
$shipping_option = ! empty( $shipping_option ) ? $shipping_option : '';
$shipment_provider = $fulfillment->get_shipment_provider() ?? '';
$is_custom = 'other' === $shipment_provider;
$entry_method = FulfillmentsTracker::determine_tracking_entry_method( $source, $shipping_option );
$resolved_provider = FulfillmentUtils::resolve_provider_name( $fulfillment );
FulfillmentsTracker::track_fulfillment_tracking_added(
$fulfillment->get_id(),
$entry_method,
$resolved_provider,
$is_custom
);
}