WC_Shipping_Zone::get_shipping_methods() public WC 1.0
Get shipping methods linked to this zone.
{} Это метод класса: WC_Shipping_Zone{}
Хуки из метода
Возвращает
Массив. of objects
Использование
$WC_Shipping_Zone = new WC_Shipping_Zone(); $WC_Shipping_Zone->get_shipping_methods( $enabled_only, $context );
- $enabled_only(true/false)
- Only return enabled methods.
- $context(строка)
- Getting shipping methods for what context. Valid values, admin, json.
Код WC_Shipping_Zone::get_shipping_methods() WC Shipping Zone::get shipping methods WC 5.0.0
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 );
}