array(), 'outputFields' => self::get_output_fields(), 'mutateAndGetPayload' => self::mutate_and_get_payload(), ) ); } /** * Defines the mutation output field configuration * * @return array */ public static function get_output_fields() { return array( 'cart' => array( 'type' => 'Cart', 'resolve' => function ( $payload ) { return $payload['cart']; }, ), ); } /** * Defines the mutation data modification closure. * * @return callable */ public static function mutate_and_get_payload() { return function( $input, AppContext $context, ResolveInfo $info ) { // Get WC_Cart instance. $cloned_cart = clone \WC()->cart; do_action( 'woocommerce_graphql_before_empty_cart', $cloned_cart, $input, $context, $info ); // Empty cart. \WC()->cart->empty_cart(); do_action( 'woocommerce_graphql_after_empty_cart', $cloned_cart, $input, $context, $info ); return array( 'cart' => $cloned_cart ); }; } }