Automattic\WooCommerce\Admin\Features\Fulfillments
FulfillmentsRenderer::filter_legacy_orders_list_query
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() FulfillmentsRenderer::filter legacy orders list query code WC 11.0.1
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 ) ) {
// Only track when the filter is explicitly submitted, not on pagination/refresh.
if ( isset( $_GET['filter_action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
FulfillmentsTracker::track_fulfillment_filter_used( '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' => '=',
),
)
);
}
}
}