From 7fd709e6e7e246d2ef2b564b25b4d697f6434977 Mon Sep 17 00:00:00 2001 From: Rob Belfort Date: Fri, 4 Oct 2024 03:59:16 -0400 Subject: [PATCH 1/2] Fix Product Variation Shipping Class --- includes/model/class-product-variation.php | 13 +++++++++++++ includes/model/class-product.php | 2 +- includes/type/interface/class-product-variation.php | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/includes/model/class-product-variation.php b/includes/model/class-product-variation.php index 59120761..66d43c7c 100644 --- a/includes/model/class-product-variation.php +++ b/includes/model/class-product-variation.php @@ -231,6 +231,19 @@ protected function init() { 'shipping_class_id' => function () { return ! empty( $this->wc_data->get_shipping_class_id() ) ? $this->wc_data->get_shipping_class_id() : null; }, + 'shippingClassId' => function () { + return ! empty( $this->wc_data->get_shipping_class_id() ) ? $this->wc_data->get_shipping_class_id() : 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_a( $shipping_class_term, 'WP_Term' ) ) { + $shipping_class = $shipping_class_term; + } + + return $shipping_class ?? null; + }, 'image_id' => function () { return ! empty( $this->wc_data->get_image_id() ) ? $this->wc_data->get_image_id() : null; }, 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 7efb6c6b..2066a5a6 100644 --- a/includes/type/interface/class-product-variation.php +++ b/includes/type/interface/class-product-variation.php @@ -242,7 +242,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' => [ From 47910a44742bad8fb53d845ca2d5ca75d38bde36 Mon Sep 17 00:00:00 2001 From: Rob Belfort Date: Fri, 18 Oct 2024 10:22:14 -0400 Subject: [PATCH 2/2] Product Variation Schema and Checking Term instance Fix --- includes/model/class-product-variation.php | 2 +- includes/type/interface/class-product-variation.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/includes/model/class-product-variation.php b/includes/model/class-product-variation.php index 66d43c7c..e89354f0 100644 --- a/includes/model/class-product-variation.php +++ b/includes/model/class-product-variation.php @@ -238,7 +238,7 @@ protected function init() { $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_a( $shipping_class_term, 'WP_Term' ) ) { + if ( ! is_wp_error( $shipping_class_term ) && $shipping_class_term instanceof \WP_Term ) { $shipping_class = $shipping_class_term; } diff --git a/includes/type/interface/class-product-variation.php b/includes/type/interface/class-product-variation.php index 2066a5a6..f29c8927 100644 --- a/includes/type/interface/class-product-variation.php +++ b/includes/type/interface/class-product-variation.php @@ -241,6 +241,10 @@ public static function get_fields() { 'type' => 'String', 'description' => __( 'Product variation purchase_note', 'wp-graphql-woocommerce' ), ], + 'shippingClassId' => [ + 'type' => 'Int', + 'description' => __( 'Product variation shipping class ID', 'wp-graphql-woocommerce' ), + ], 'shippingClass' => [ 'type' => 'ShippingClass', 'description' => __( 'Product variation shipping class', 'wp-graphql-woocommerce' ),