删除Woocommerce中缺货商品的第二天送货方式

时间:2013-11-11 20:01:09

标签: wordpress woocommerce shipping

我使用了一个表费率运费插件来设置4个运输区域,每个区域都有标准和次日交付选项。

商店中的每件商品都可在10-15天内上市,但有许多商品有库存,可供第二天发货。如果购物车中的任何产品没有库存,则只能使用标准送货选项。

我很确定我需要使用'woocommerce_available_shipping_methods'过滤器,如下面这个类似的问题/答案所示:Hide Shipping Options Woocommerce但是,我完全不知道如何查看库存水平每个购物车项目。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:2)

我现在已经解决了这个问题。 我的解决方案绝对不适合所有人,但它可以帮助别人。

我正在为woocommerce使用这个表费率发送插件:http://codecanyon.net/item/table-rate-shipping-for-woocommerce/3796656?WT(如果你想复制它的工作方式)

我很感激这个问题的答案:Hide Shipping Options Woocommerce

代码基本上是从中复制的,但设置为检查产品的库存数量。

此代码不考虑是否允许延期交货,它确实检查库存数量是否> 0和购物车数量< =库存数量。基本上,如果产品存在于仓库,第二天发货时可以在结账时发货,如果没有,它将被删除,只有标准运费可用。

/* !Hide Shipping Options Woocommerce */

add_filter( 'woocommerce_available_shipping_methods', 'hide_shipping_based_on_quantity' ,    10, 1 );

function check_cart_for_oos() {

// load the contents of the cart into an array.
global $woocommerce;
$found = false;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values['data'];
    $_product_quantity = $_product->get_stock_quantity();
    $_cart_quantity = $values['quantity'];
    if (($_product_quantity <= 0) || ($_cart_quantity > $_product_quantity)) {
        $found = true;
        break;
    }
}
return $found;
}


function hide_shipping_based_on_quantity( $available_methods ) {

// use the function check_cart_for_oos() to check the cart for products with 0 stock.
if ( check_cart_for_oos() ) {

    // remove the rate you want
    unset( $available_methods['table_rate_shipping_next-day'] ); // Replace "table_rate_shipping_next-day" with "table_rate_shipping_your-identifier".
}

// return the available methods without the one you unset.
return $available_methods;
}