1
特定の商品がショッピングカートに入っていれば、送料無料でお届けします。私はそれがカート内の唯一のアイテムであれば動作するメソッドを持っていますが、カートに何かを追加するとすぐには機能しません。この製品には送料無料の送料が含まれています。 tl; drカートに他のアイテムを追加しても、これを動作させる方法を教えてください。Woocommerce配送クラスがカートに入っている場合は、全ての商品用の送料無料
出典:特定のクラス
if (! class_exists('WC_Enable_Free_Shipping')) :
class WC_Enable_Free_Shipping {
protected static $instance = null;
private function __construct() {
// add our check
add_filter('woocommerce_shipping_free_shipping_is_available', array($this, 'patricks_enable_free_shipping'), 20);
}
/**
* Enable free shipping for orders with products that have the free-shipping shipping class slug
*/
public function patricks_enable_free_shipping($is_available) {
global $woocommerce;
// set the shipping classes that are eligible
$eligible = array('free-shipping');
// get cart contents
$cart_items = $woocommerce->cart->get_cart();
// loop through the items checking to make sure they all have the right class
foreach ($cart_items as $key => $item) {
if (! in_array($item['data']->get_shipping_class(), $eligible)) {
// this item doesn't have the right class. return default availability
return $is_available;
}
}
// nothing out of the ordinary return true
return true;
}
/**
* Return an instance of this class.
*/
public static function get_instance() {
// If the single instance hasn't been set, set it now.
if (null == self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
}
add_action('init', array('WC_Enable_Free_Shipping', 'get_instance'), 0);
endif;
ためhttps://www.speakinginbytes.com/2014/12/enable-free-shipping-per-product/
送料無料、送料無料は
function my_hide_shipping_when_free_is_available($rates) {
$free = array();
foreach ($rates as $rate_id => $rate) {
if ('free_shipping' === $rate->method_id) {
$free[ $rate_id ] = $rate;
break;
}
}
return ! empty($free) ? $free : $rates;
}
add_filter('woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100);