wordpress 在购物车中的两件商品中,仅显示一件商品的配送选项

qcbq4gxm  于 2023-04-05  发布在  WordPress
关注(0)|答案(1)|浏览(163)

我有两个独立的产品;1个可通过邮件邮寄/提货的产品和1个可发货的产品。
如果我的购物车上有两个项目,他们的运输选项都显示。我想只能显示1个产品的运输选项。
我尝试过使用不同的插件,即. Woocommerce的有条件航运,Woocommerce的有条件航运和付款,Woocommerce的高级统一费率航运.
我没有尝试使用PHP代码来做这件事,因为我没有编码经验,并且尽可能多地,我想在 Jmeter 板上做这件事。
我试着在插件上做条件,不显示产品的运输选项,但它总是显示产品的运输选项。

ryevplcw

ryevplcw1#

我从@businessbloomer那里学到了这个!第一部分是一个函数,你可以把它留在函数中。第二部分检查购物车中的特定类别,你可以根据那只猫是否在购物车中取消设置运输方法

// check for shipping class in cart
function cart_has_product_with_shipping_class($slug)
{
    global $woocommerce;
    $product_in_cart = false;
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
        $_product = $values['data'];
        $terms    = get_the_terms($_product->id, 'product_shipping_class');
        if ($terms) {
            foreach ($terms as $term) {
                $_shippingclass = $term->slug;
                if ($slug === $_shippingclass) {
                    $product_in_cart = true;
                }
            }
        }
    }
    return $product_in_cart;
}

// remove all but desired for selected_category products
add_filter('woocommerce_package_rates', 'hide_all_but_desired_if_selected_category', 99);
function hide_all_but_desired_if_selected_category($rates)
{
    $categories  = array('selected-category-slug');
    //if selected_category is in the cart
    if (woo_custom_category_is_in_the_cart($categories)) {
        unset($rates['table_rate:24:2']); // zone 1
        unset($rates['table_rate:22']); // zone 2
    }
    return $rates;
}

您可以通过检查您的购物车运输方法获得这些$率

相关问题