Automattic\WooCommerce\Admin\Features\Fulfillments

FulfillmentsRenderer::filter_legacy_orders_by_shipping_providerpublicWC 10.7.0

Filter legacy orders by shipping provider.

Method of the class: FulfillmentsRenderer{}

No Hooks.

Returns

null. Nothing (null).

Usage

$FulfillmentsRenderer = new FulfillmentsRenderer();
$FulfillmentsRenderer->filter_legacy_orders_by_shipping_provider( $query ): void;
$query(WP_Query) (required)
The WP_Query object.

Changelog

Since 10.7.0 Introduced.

FulfillmentsRenderer::filter_legacy_orders_by_shipping_provider() code WC 11.0.1

public function filter_legacy_orders_by_shipping_provider( $query ): void {
	if (
		! is_admin()
		|| ! $query->is_main_query()
		|| 'shop_order' !== $query->get( 'post_type' )
		// This is a read-only filter on the admin orders table, so nonce verification is not required.
		// phpcs:ignore WordPress.Security.NonceVerification
		|| ! isset( $_GET['shipping_provider'] )
		// phpcs:ignore WordPress.Security.NonceVerification
		|| empty( $_GET['shipping_provider'] )
	) {
		return;
	}

	// phpcs:ignore WordPress.Security.NonceVerification
	$shipping_provider = sanitize_text_field( wp_unslash( $_GET['shipping_provider'] ) );
	$order_ids         = $this->get_order_ids_by_shipping_provider( $shipping_provider );

	if ( empty( $order_ids ) ) {
		$query->set( 'post__in', array( 0 ) );
	} else {
		$existing = $query->get( 'post__in' );
		if ( ! empty( $existing ) && is_array( $existing ) ) {
			$order_ids = array_intersect( $existing, $order_ids );
			if ( empty( $order_ids ) ) {
				$order_ids = array( 0 );
			}
		}
		$query->set( 'post__in', $order_ids );
	}
}