WC_AJAX::is_shipping_provider_in_useprivate staticWC 10.7.0

Check if a shipping provider slug is referenced by any fulfillment record.

Method of the class: WC_AJAX{}

No Hooks.

Returns

true|false. True if the provider is in use.

Usage

$result = WC_AJAX::is_shipping_provider_in_use( $provider_slug ): bool;
$provider_slug(string) (required)
The provider slug to check.

Changelog

Since 10.7.0 Introduced.

WC_AJAX::is_shipping_provider_in_use() code WC 10.8.1

private static function is_shipping_provider_in_use( string $provider_slug ): bool {
	global $wpdb;

	$fulfillments_table = $wpdb->prefix . 'wc_order_fulfillments';
	$meta_table         = $wpdb->prefix . 'wc_order_fulfillment_meta';

	// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
	$exists = $wpdb->get_var(
		$wpdb->prepare(
			"SELECT 1 FROM {$fulfillments_table} f
			INNER JOIN {$meta_table} m ON f.fulfillment_id = m.fulfillment_id
			WHERE m.meta_key = '_shipment_provider'
			AND m.meta_value = %s
			AND f.date_deleted IS NULL
			AND m.date_deleted IS NULL
			LIMIT 1",
			wp_json_encode( $provider_slug )
		)
	);
	// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared

	// Fail safe: assume in use if the query itself failed.
	if ( $wpdb->last_error ) {
		return true;
	}

	return null !== $exists;
}