From 7d9df9de57ec1398f3ba3d1bf72ab3aa14c67f67 Mon Sep 17 00:00:00 2001 From: dwindown Date: Sun, 9 Nov 2025 00:20:35 +0700 Subject: [PATCH] debug: Check BOTH enabled sources (method->enabled vs instance_settings) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Investigation shows instance_settings["enabled"] = "no" but WooCommerce shows enabled. Hypothesis: - WooCommerce stores enabled status in $method->enabled property - instance_settings["enabled"] might be stale/cached - We were reading the wrong source Changes: ✅ Log BOTH $method->enabled and instance_settings["enabled"] ✅ Switch to using $method->enabled as source of truth ✅ This is what WooCommerce admin uses Test: Refresh page and check if $method->enabled shows "yes" --- includes/Api/ShippingController.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/includes/Api/ShippingController.php b/includes/Api/ShippingController.php index f0e018a..cb9a61f 100644 --- a/includes/Api/ShippingController.php +++ b/includes/Api/ShippingController.php @@ -100,18 +100,20 @@ class ShippingController extends WP_REST_Controller { foreach ( $shipping_methods as $method ) { // Get fresh settings from database $method->init_instance_settings(); - $is_enabled = isset( $method->instance_settings['enabled'] ) && $method->instance_settings['enabled'] === 'yes'; - // Debug: Log what we're reading + // Debug: Check BOTH sources of enabled status error_log( sprintf( - '[WooNooW] Zone %d Method %s (instance %d): enabled setting = "%s", is_enabled = %s', + '[WooNooW] Zone %d Method %s (instance %d): $method->enabled = "%s", instance_settings["enabled"] = "%s"', $zone_data['id'], $method->id, $method->instance_id, - isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET', - $is_enabled ? 'true' : 'false' + isset( $method->enabled ) ? $method->enabled : 'NOT SET', + isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET' ) ); + // Use $method->enabled as the source of truth (this is what WooCommerce uses) + $is_enabled = isset( $method->enabled ) && $method->enabled === 'yes'; + $rate = array( 'id' => $method->id . ':' . $method->instance_id, 'instance_id' => $method->instance_id, @@ -154,17 +156,19 @@ class ShippingController extends WP_REST_Controller { foreach ( $shipping_methods as $method ) { // Get fresh settings from database $method->init_instance_settings(); - $is_enabled = isset( $method->instance_settings['enabled'] ) && $method->instance_settings['enabled'] === 'yes'; - // Debug: Log what we're reading + // Debug: Check BOTH sources of enabled status error_log( sprintf( - '[WooNooW] Zone 0 (Rest of World) Method %s (instance %d): enabled setting = "%s", is_enabled = %s', + '[WooNooW] Zone 0 (Rest of World) Method %s (instance %d): $method->enabled = "%s", instance_settings["enabled"] = "%s"', $method->id, $method->instance_id, - isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET', - $is_enabled ? 'true' : 'false' + isset( $method->enabled ) ? $method->enabled : 'NOT SET', + isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET' ) ); + // Use $method->enabled as the source of truth (this is what WooCommerce uses) + $is_enabled = isset( $method->enabled ) && $method->enabled === 'yes'; + $rate = array( 'id' => $method->id . ':' . $method->instance_id, 'instance_id' => $method->instance_id,