get_id()] = array( $defaultZone->get_data(), 'zone_id' => $defaultZone->get_id(), 'formatted_zone_location' => $defaultZone->get_formatted_location(), 'shipping_methods' => $defaultZone->get_shipping_methods(false) ); if ($shippingZones) { foreach ($shippingZones as $code => $shippingZone) { foreach ($shippingZone['shipping_methods'] as $key => $shipping_method) { $shipping_methods = array( 'id' => $shipping_method->id, 'instance_id' => $shipping_method->instance_id, 'title' => $shipping_method->title ); if ($enhanced) { $shipping_code = $shipping_method->id; } else { $shipping_code = $shipping_method->id . ':' . $shipping_method->instance_id; } if (!isset($result[$shipping_code])) { $result[$shipping_code] = array( 'name' => $shipping_method->method_title, 'enabled' => $shipping_method->enabled, 'description' => $shipping_method->method_description, 'title' => $shipping_method->title ); } if ($enhanced) { $result[$shipping_method->id]['shipping_methods'][$shipping_method->id . ':' . $shipping_method->instance_id] = $shipping_methods; unset($shipping_methods); } } } } return $result; } function get_wc_shipping_methods() { $wc_shipping = WC_Shipping::instance(); $shipping_methods = $wc_shipping->get_shipping_methods(); $result = array(); foreach ($shipping_methods as $code => $shipping) { $result[$code] = array( 'name' => $shipping->method_title, 'enabled' => $shipping->enabled, 'description' => $shipping->method_description, 'title' => $shipping->title ? $shipping->title : $shipping->method_title ); } return apply_filters('retailcrm_shipping_list', $result); } function retailcrm_get_delivery_service($method_id, $instance_id) { $shippings_by_zone = get_wc_shipping_methods_by_zones(true); $method = explode(':', $method_id); $method_id = $method[0]; $shipping = isset($shippings_by_zone[$method_id]) ? $shippings_by_zone[$method_id] : array(); if ($shipping && isset($shipping['shipping_methods'][$method_id . ':' . $instance_id])) { return $shipping['shipping_methods'][$method_id . ':' . $instance_id]; } return false; } /** * @param $id * @param $settings * * @return false|WC_Product|null */ function retailcrm_get_wc_product($id, $settings) { if (isset($settings['bind_by_sky']) && $settings['bind_by_sky'] == WC_Retailcrm_Base::YES ) { $id = wc_get_product_id_by_sku($id); } return wc_get_product($id); }