diff --git a/includes/data/mutation/class-checkout-mutation.php b/includes/data/mutation/class-checkout-mutation.php index cb98184f..5acd01d4 100644 --- a/includes/data/mutation/class-checkout-mutation.php +++ b/includes/data/mutation/class-checkout-mutation.php @@ -493,7 +493,6 @@ protected static function validate_checkout( &$data ) { if ( WC()->cart->needs_payment() ) { $available_gateways = WC()->payment_gateways->get_available_payment_gateways(); - \codecept_debug( $available_gateways ); if ( ! isset( $available_gateways[ $data['payment_method'] ] ) ) { throw new UserError( __( 'Invalid payment method.', 'wp-graphql-woocommerce' ) ); } else { diff --git a/includes/model/class-product-variation.php b/includes/model/class-product-variation.php index 59120761..2ca329e4 100644 --- a/includes/model/class-product-variation.php +++ b/includes/model/class-product-variation.php @@ -215,6 +215,16 @@ protected function init() { 'salePriceRaw' => function () { return ! empty( $this->wc_data->get_sale_price() ) ? $this->wc_data->get_sale_price() : null; }, + 'shippingClass' => function () { + $shipping_class_id = $this->wc_data->get_shipping_class_id(); + $shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' ); + + if ( ! is_wp_error( $shipping_class_term ) && ! is_null( $shipping_class_term ) && is_a( $shipping_class_term, 'WP_Term' ) ) { + $shipping_class = $shipping_class_term; + } + + return $shipping_class ?? null; + }, /** * Connection resolvers fields diff --git a/includes/model/class-product.php b/includes/model/class-product.php index 9109288e..bf77211f 100644 --- a/includes/model/class-product.php +++ b/includes/model/class-product.php @@ -413,7 +413,7 @@ protected function init() { return ! empty( $this->wc_data->get_height() ) ? $this->wc_data->get_height() : null; }, 'shippingClassId' => function () { - return ! empty( $this->wc_data->get_image_id() ) ? $this->wc_data->get_shipping_class_id() : null; + return ! empty( $this->wc_data->get_shipping_class_id() ) ? $this->wc_data->get_shipping_class_id() : null; }, 'shippingRequired' => function () { return $this->wc_data->needs_shipping(); diff --git a/includes/type/interface/class-product-variation.php b/includes/type/interface/class-product-variation.php index e7665f92..87caaa60 100644 --- a/includes/type/interface/class-product-variation.php +++ b/includes/type/interface/class-product-variation.php @@ -244,7 +244,7 @@ public static function get_fields() { 'description' => __( 'Product variation purchase_note', 'wp-graphql-woocommerce' ), ], 'shippingClass' => [ - 'type' => 'String', + 'type' => 'ShippingClass', 'description' => __( 'Product variation shipping class', 'wp-graphql-woocommerce' ), ], 'catalogVisibility' => [ diff --git a/tests/wpunit/ProductVariationQueriesTest.php b/tests/wpunit/ProductVariationQueriesTest.php index a3e70e8f..d5240c31 100644 --- a/tests/wpunit/ProductVariationQueriesTest.php +++ b/tests/wpunit/ProductVariationQueriesTest.php @@ -127,7 +127,9 @@ public function testVariationQuery() { height menuOrder purchaseNote - shippingClass + shippingClass { + id + } catalogVisibility hasAttributes type