WC_Shipping_Zone::get_shipping_methods()
Get shipping methods linked to this zone.
Method of the class: WC_Shipping_Zone{}
Hooks from the method
Return
Array
. of objects
Usage
$WC_Shipping_Zone = new WC_Shipping_Zone(); $WC_Shipping_Zone->get_shipping_methods( $enabled_only, $context );
- $enabled_only(true|false)
- Only return enabled methods.
Default: false - $context(string)
- Getting shipping methods for what context. Valid values, admin, json.
Default: 'admin'
WC_Shipping_Zone::get_shipping_methods() WC Shipping Zone::get shipping methods code WC 9.4.2
public function get_shipping_methods( $enabled_only = false, $context = 'admin' ) { if ( null === $this->get_id() ) { return array(); } $raw_methods = $this->data_store->get_methods( $this->get_id(), $enabled_only ); $wc_shipping = WC_Shipping::instance(); $allowed_classes = $wc_shipping->get_shipping_method_class_names(); $methods = array(); foreach ( $raw_methods as $raw_method ) { if ( in_array( $raw_method->method_id, array_keys( $allowed_classes ), true ) ) { $class_name = $allowed_classes[ $raw_method->method_id ]; $instance_id = $raw_method->instance_id; // The returned array may contain instances of shipping methods, as well // as classes. If the "class" is an instance, just use it. If not, // create an instance. if ( is_object( $class_name ) ) { $class_name_of_instance = get_class( $class_name ); $methods[ $instance_id ] = new $class_name_of_instance( $instance_id ); } else { // If the class is not an object, it should be a string. It's better // to double check, to be sure (a class must be a string, anything) // else would be useless. if ( is_string( $class_name ) && class_exists( $class_name ) ) { $methods[ $instance_id ] = new $class_name( $instance_id ); } } // Let's make sure that we have an instance before setting its attributes. if ( is_object( $methods[ $instance_id ] ) ) { $methods[ $instance_id ]->method_order = absint( $raw_method->method_order ); $methods[ $instance_id ]->enabled = $raw_method->is_enabled ? 'yes' : 'no'; $methods[ $instance_id ]->has_settings = $methods[ $instance_id ]->has_settings(); $methods[ $instance_id ]->settings_html = $methods[ $instance_id ]->supports( 'instance-settings-modal' ) ? $methods[ $instance_id ]->get_admin_options_html() : false; $methods[ $instance_id ]->method_description = wp_kses_post( wpautop( $methods[ $instance_id ]->method_description ) ); } if ( 'json' === $context ) { // We don't want the entire object in this context, just the public props. $methods[ $instance_id ] = (object) get_object_vars( $methods[ $instance_id ] ); unset( $methods[ $instance_id ]->instance_form_fields, $methods[ $instance_id ]->form_fields ); } } } uasort( $methods, 'wc_shipping_zone_method_order_uasort_comparison' ); return apply_filters( 'woocommerce_shipping_zone_shipping_methods', $methods, $raw_methods, $allowed_classes, $this ); }