(int) $instance_id, 'co' => strtoupper((string) ($dest['country'] ?? '')), 'st' => strtoupper((string) ($dest['state'] ?? '')), 'pc' => $postcode, 'q' => (int) ($summary['total_qty'] ?? 0), 'w' => (float) ($summary['total_weight'] ?? 0), 's' => (float) ($summary['subtotal'] ?? 0), 'cs' => $summary['class_subtotal'] ?? array(), 'cq' => $summary['class_qty'] ?? array(), 'cw' => $summary['class_weight'] ?? array(), 'v' => (string) $version, ); foreach (array('cs', 'cq', 'cw') as $k) { if (is_array($key_parts[$k])) { ksort($key_parts[$k]); } } return hash('sha256', wp_json_encode($key_parts)); } public static function get($hash) { if (!is_string($hash) || $hash === '') { return null; } if (array_key_exists($hash, self::$request_cache)) { return self::$request_cache[$hash]; } $cached = wp_cache_get('rates_' . $hash, 'aieo_trs'); if (is_array($cached)) { self::$request_cache[$hash] = $cached; return $cached; } return null; } public static function set($hash, array $matched) { if (!is_string($hash) || $hash === '') { return; } self::$request_cache[$hash] = $matched; wp_cache_set('rates_' . $hash, $matched, 'aieo_trs', HOUR_IN_SECONDS); } public static function flush_request_cache() { self::$request_cache = array(); } } }