WC_Shipping_Method::is_available PHP Method

is_available() public method

Is this method available?
public is_available ( array $package ) : boolean
$package array
return boolean
    public function is_available($package)
    {
        $available = $this->is_enabled();
        // Country availability (legacy, for non-zone based methods)
        if (!$this->instance_id && $available) {
            $countries = is_array($this->countries) ? $this->countries : array();
            switch ($this->availability) {
                case 'specific':
                case 'including':
                    $available = in_array($package['destination']['country'], array_intersect($countries, array_keys(WC()->countries->get_shipping_countries())));
                    break;
                case 'excluding':
                    $available = in_array($package['destination']['country'], array_diff(array_keys(WC()->countries->get_shipping_countries()), $countries));
                    break;
                default:
                    $available = in_array($package['destination']['country'], array_keys(WC()->countries->get_shipping_countries()));
                    break;
            }
        }
        return apply_filters('woocommerce_shipping_' . $this->id . '_is_available', $available, $package);
    }

Usage Example

 /**
  * Is this method available?
  *
  * @version 2.5.7
  * @since   2.5.7
  * @param   array $package
  * @return  bool
  */
 public function is_available($package)
 {
     $available = parent::is_available($package);
     if ($available) {
         $total_weight = WC()->cart->get_cart_contents_weight();
         if (0 != $this->min_weight && $total_weight < $this->min_weight) {
             $available = false;
         } elseif (0 != $this->max_weight && $total_weight > $this->max_weight) {
             $available = false;
         }
     }
     return $available;
 }