仅显示特定WooCommerce产品类别的“本地提货”发货方式

时间:2019-09-04 作者:Anas

我的网站上有一些产品类别,客户可以从我的商店收集,所以我需要添加本地取货作为一种运输方式。我添加了本地取货,但它在结账页面上显示了一个复选框,供客户选择正常发货或本地取货。我需要的是,当客户将产品添加到“x”类别的购物车时,向他们显示正常运费和本地提货,以便他们可以选择对他们来说方便的产品,以及仅具有正常运费的其他产品。我不想显示其他类别的本地皮卡。

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

以下遗嘱only show cart中特定产品类别的“本地提货”装运方法:

add_action( \'woocommerce_package_rates\',\'show_hide_local_pickup_shipping_methods\', 10, 2 );
function show_hide_local_pickup_shipping_methods( $rates, $package ) {

    // HERE BELOW your product categories in the array
    $categories = array( \'t-shirts\', \'hat\' );

    $term_found = false;

    // Loop through cart items
    foreach( $package[\'contents\'] as $cart_item ){
        if( has_term( $categories, \'product_cat\', $cart_item[\'product_id\'] ) ) {
            $term_found = true;
            break;
        }
    }

    // Loop through shipping methods
    foreach( $rates as $rate_key => $rate ) {
        if( \'local_pickup\' === $rate->method_id && ! $term_found ) {
            unset($rates[$rate_key]);
        }
    }
    return $rates;
}
代码进入函数。活动子主题(或活动主题)的php文件。已测试并正常工作。

Note: 您可能需要刷新配送方式、清空购物车并转到配送设置/然后禁用/保存并重新启用/保存任何配送方式。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。