JezK
Edit File: CustomShippingProvider.php
<?php declare(strict_types=1); namespace Automattic\WooCommerce\Admin\Features\Fulfillments\Providers; /** * Custom shipping provider loaded from the wc_fulfillment_shipping_provider taxonomy. * * Unlike built-in providers, custom providers do not support automatic tracking * number parsing; they rely on user-supplied tracking URL templates. * * @since 10.7.0 */ class CustomShippingProvider extends AbstractShippingProvider { /** * The provider key (taxonomy term slug). * * @var string */ private string $key; /** * The provider display name. * * @var string */ private string $name; /** * The provider icon URL. * * @var string */ private string $icon; /** * The tracking URL template containing __PLACEHOLDER__ for the tracking number. * * @var string */ private string $tracking_url_template; /** * Constructor. * * @param string $key The provider key (term slug). * @param string $name The provider display name. * @param string $icon The provider icon URL. * @param string $tracking_url_template The tracking URL template. */ public function __construct( string $key, string $name, string $icon, string $tracking_url_template ) { $this->key = $key; $this->name = $name; $this->icon = $icon; $this->tracking_url_template = $tracking_url_template; } /** * Get the key of the shipping provider. * * @return string */ public function get_key(): string { return $this->key; } /** * Get the name of the shipping provider. * * @return string */ public function get_name(): string { return $this->name; } /** * Get the icon URL of the shipping provider. * * @return string */ public function get_icon(): string { return $this->icon; } /** * Get the tracking URL for a given tracking number. * * Replaces __PLACEHOLDER__ in the template with the actual tracking number. * * @param string $tracking_number The tracking number. * @return string The tracking URL with the placeholder replaced. */ public function get_tracking_url( string $tracking_number ): string { if ( empty( $this->tracking_url_template ) ) { return ''; } return str_replace( '__PLACEHOLDER__', rawurlencode( $tracking_number ), $this->tracking_url_template ); } /** * Custom providers do not support automatic tracking number parsing. * * @param string $tracking_number The tracking number. * @param string $shipping_from The country code from which the shipment is sent. * @param string $shipping_to The country code to which the shipment is sent. * @return array|null Always returns null for custom providers. * * phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter */ public function try_parse_tracking_number( string $tracking_number, string $shipping_from, string $shipping_to ): ?array { return null; } }