Automattic\WooCommerce\Internal\Fulfillments

FulfillmentsRenderer::filter_legacy_orders_list_querypublicWC 1.0

Filter the legacy orders list query to include fulfillment status.

Method of the class: FulfillmentsRenderer{}

No Hooks.

Returns

null. Nothing (null).

Usage

$FulfillmentsRenderer = new FulfillmentsRenderer();
$FulfillmentsRenderer->filter_legacy_orders_list_query( $query );
$query(WP_Query) (required)
The WP_Query object.

FulfillmentsRenderer::filter_legacy_orders_list_query() code WC 10.3.3

public function filter_legacy_orders_list_query( $query ) {
	if (
	is_admin()
	&& $query->is_main_query()
	&& $query->get( 'post_type' ) === 'shop_order'
	&& isset( $_GET['fulfillment_status'] ) && ! empty( $_GET['fulfillment_status'] ) // phpcs:ignore WordPress.Security.NonceVerification
	) {
		$status = sanitize_text_field( wp_unslash( $_GET['fulfillment_status'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
		// Ensure the fulfillment status is one of the allowed values.
		if ( FulfillmentUtils::is_valid_order_fulfillment_status( $status ) ) {
			$query->set(
				'meta_query',
				'no_fulfillments' === $status ?
				array(
					'relation' => 'OR',
					array(
						'key'     => '_fulfillment_status',
						'compare' => 'NOT EXISTS',
					),
				) :
				array(
					array(
						'key'     => '_fulfillment_status',
						'value'   => $status,
						'compare' => '=',
					),
				)
			);
		}
	}
}