Automattic\WooCommerce\Internal\Admin\Agentic
AgenticWebhookPayloadBuilder::map_order_status
Map WooCommerce order status to ACP status.
ACP statuses: created, manual_review, confirmed, canceled, shipped, fulfilled
Метод класса: AgenticWebhookPayloadBuilder{}
Хуки из метода
Возвращает
Строку. ACP status.
Использование
// private - только в коде основоного (родительского) класса $result = $this->map_order_status( $wc_status ): string;
- $wc_status(строка) (обязательный)
- WooCommerce order status.
Код AgenticWebhookPayloadBuilder::map_order_status() AgenticWebhookPayloadBuilder::map order status WC 10.5.0
private function map_order_status( string $wc_status ): string {
$status_map = array(
// WooCommerce status => ACP status.
OrderStatus::PENDING => ACPOrderStatus::CREATED,
OrderStatus::PROCESSING => ACPOrderStatus::CONFIRMED,
OrderStatus::ON_HOLD => ACPOrderStatus::MANUAL_REVIEW,
OrderStatus::COMPLETED => ACPOrderStatus::FULFILLED,
OrderStatus::CANCELLED => ACPOrderStatus::CANCELED,
OrderStatus::REFUNDED => ACPOrderStatus::FULFILLED, // Refunded orders are still fulfilled.
OrderStatus::FAILED => ACPOrderStatus::CANCELED,
);
/**
* Filter the WooCommerce to ACP order status mapping.
*
* Allows extensions to map custom WooCommerce order statuses to ACP order statuses.
* The mapped status must be one of: created, manual_review, confirmed, canceled, shipped, fulfilled.
*
* @see Automattic\WooCommerce\Internal\Agentic\Enums\Specs\OrderStatus
*
* @since 10.3.0
*
* @param array $status_map Associative array of WooCommerce status => ACP status.
* @param string $wc_status The WooCommerce order status being mapped.
*/
$status_map = apply_filters( 'woocommerce_agentic_webhook_order_status_map', $status_map, $wc_status );
// Get mapped status or default to 'created'.
$mapped_status = isset( $status_map[ $wc_status ] ) ? $status_map[ $wc_status ] : ACPOrderStatus::CREATED;
// Validate the mapped status is a valid ACP status.
if ( ! ACPOrderStatus::is_valid( $mapped_status ) ) {
// Log a warning for invalid status but continue with fallback.
wc_get_logger()->warning(
sprintf(
'Invalid ACP order status "%s" returned by woocommerce_agentic_webhook_order_status_map filter for WooCommerce status "%s". Using "created" as fallback.',
$mapped_status,
$wc_status
),
array( 'source' => 'agentic-webhooks' )
);
return ACPOrderStatus::CREATED;
}
return $mapped_status;
}