debug: Check BOTH enabled sources (method->enabled vs instance_settings)

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"
This commit is contained in:
dwindown
2025-11-09 00:20:35 +07:00
parent 2608f3ec38
commit 7d9df9de57

View File

@@ -100,18 +100,20 @@ class ShippingController extends WP_REST_Controller {
foreach ( $shipping_methods as $method ) { foreach ( $shipping_methods as $method ) {
// Get fresh settings from database // Get fresh settings from database
$method->init_instance_settings(); $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( 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'], $zone_data['id'],
$method->id, $method->id,
$method->instance_id, $method->instance_id,
isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET', isset( $method->enabled ) ? $method->enabled : 'NOT SET',
$is_enabled ? 'true' : 'false' 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( $rate = array(
'id' => $method->id . ':' . $method->instance_id, 'id' => $method->id . ':' . $method->instance_id,
'instance_id' => $method->instance_id, 'instance_id' => $method->instance_id,
@@ -154,17 +156,19 @@ class ShippingController extends WP_REST_Controller {
foreach ( $shipping_methods as $method ) { foreach ( $shipping_methods as $method ) {
// Get fresh settings from database // Get fresh settings from database
$method->init_instance_settings(); $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( 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->id,
$method->instance_id, $method->instance_id,
isset( $method->instance_settings['enabled'] ) ? $method->instance_settings['enabled'] : 'NOT SET', isset( $method->enabled ) ? $method->enabled : 'NOT SET',
$is_enabled ? 'true' : 'false' 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( $rate = array(
'id' => $method->id . ':' . $method->instance_id, 'id' => $method->id . ':' . $method->instance_id,
'instance_id' => $method->instance_id, 'instance_id' => $method->instance_id,