在所有运输方式名称前添加 WooCommerce 品牌名称

Prepend WooCommerce Brand name to all Shipping methods names

我正在尝试研究是否可以在任何可用的送货选项前加上品牌名称。我将建立一家商店,您一次只能 订购一个品牌,我将内置购物车限制以防止将两个品牌混在一起。

我有一个名为 Veeqo 的外部订购系统,无需过多赘述,我需要将购物车中产品的品牌名称添加到所选的任何送货方式,以便我可以通过这些送货选项过滤订单。例如

BRAND-NAME英国次日 BRAND-NAME 英国 3-5 天

这可以做到吗?如果是,如何?

意识到我在这里问了很多,但如果有人知道这样做的方法,将不胜感激! :)

可能是一个功能,它在第一行项目中搜索“品牌”,然后将此值添加到所有送货方式标题中。 WooCommerce 只会根据国家/地区等向他们显示相关的购物方式。

使用挂钩在 woocommerce_package_rates 过滤器挂钩中的自定义函数,您将能够将购物车商品品牌名称添加到送货方式标签名称之前。

由于有多种方法可以在 WooCommerce 中启用品牌,因此您需要 定义您在 WooCommerce 中启用的品牌插件所使用的分类法 ...
有关要使用的分类法,请参阅:

add_filter( 'woocommerce_package_rates', 'prepend_brand_to_shipping_methods', 10, 2 );
function prepend_brand_to_shipping_methods( $rates, $package ){
    // HERE define the taxonomy for product brand (depend of used plugin)
    $taxonomy ='product_brand';

    // Get the first cart item
    $cart_item = reset($package['contents']);

    // Get the product brand term name
    $brand_name = wp_get_post_terms( $cart_item['product_id'], $taxonomy, ['fields' =>'names']);
    $brand_name = reset($brand_name);

    // Loop through shipping rates
    foreach ( $rates as $rate_key => $rate ){
        // Changing shipping method label name
        $rates[$rate_key]->label = $brand_name . ' ' . $rate->label;
    }
    return $rates;
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。

Refresh the shipping caches:
1). This code is already saved on your function.php file.
2). In a shipping zone settings, disable / save any shipping method, then enable back / save.
You are done and you can test it.