添加有条件类在Woocommerce车中的项目和订单项目

问题描述 投票:2回答:1

我想不同的风格Woocommerce车和订单项目时,相关产品采用Woocommerce Product add-ons 3+插件自定义字段,所以我需要添加类有条件(到车中的项目和订单项目)。

但我不能得到它的工作,用_wc_pao_addon_name元关键的工作。这里是我的代码:

  add_filter( 'woocommerce_order_item_class', 'add_product_addon_classes', 10, 4 );
  add_filter( 'woocommerce_cart_item_class', 'add_cart_addon_classes', 10, 4 );

  function add_cart_addon_classes ( $class, $cart_item, $values  ) {

    if ( isset( $values['_wc_pao_addon_name'] ) ) {
        $class = $class . ' fl-addon-item';
    }

    return $class;
}

我做错了吗?

相关:Pricing options, image swatches, and more have arrived in Product Add-Ons 3.0

php wordpress woocommerce cart orders
1个回答
1
投票

你不能让一个函数,对于这两种挂钩工作,因为他们有不同的钩参数:

  • 挂钩woocommerce_cart_item_class使用$class$cart_item$cart_item_key参数
  • 挂钩woocommerce_order_item_class使用$class$item$order参数

当你看到你的$values['_wc_pao_addon_name']不能在你的代码工作。

1)车中的物品:

要检查并获得使用Woocommerce产品附加插件的正确meta_key,你会先用测试迷上功能附加在这个答案的末尾...

一旦你会发现meta_key你将在由右addon_parent_id下面的代码meta_key更换的权利:

add_filter( 'woocommerce_cart_item_class', 'additional_class_to_cart_item_classes', 10, 3 );
function additional_class_to_cart_item_classes ( $class, $cart_item, $cart_item_key ) {
    if ( isset( $cart_item['addon_parent_id'] ) ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}

代码放在您的活动子主题(活动主题)的function.php文件。它应努力车和结算。


2)项目订单(订单接收,订单来看,所需支付和电子邮件通知):

这是因为你需要知道_wc_pao_addon_name是如何保存,以便项目更复杂。对于您将需要采取在你的数据库表wp_woocommerce_order_itemmeta看看搜索与meta_key匹配一个_wc_pao_addon_name

一旦你会发现meta_key你将在由右_wc_pao_addon_name下面的代码meta_key更换的权利:

add_filter( 'woocommerce_order_item_class', 'additional_class_to_order_item_classes', 10, 3 );
function additional_class_to_order_item_classes ( $class, $item, $order ) {
    if ( $item->get_meta('_wc_pao_addon_name') ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}

代码放在您的活动子主题(活动主题)的function.php文件。它应该工作的订单项目。


Check and get the correct cart custom metadata (testing only):

为了找出车对象什么是通过插件,Woocommerce产品添加了自定义元数据附加组件,您将使用下列正确的Meta键(将在购物车页面显示购物车项目的原始数据):

// Testing and getting cart item raw data
add_action( 'woocommerce_before_cart', function(){
    // Loop through cart items
    foreach(WC()->cart->get_cart() as $cart_item) {
        // Output cart item raw data
        echo '<pre>'; print_r($cart_item); echo '</pre>';
    }
}, 987 );

代码放在您的活动子主题(活动主题)的function.php文件。

© www.soinside.com 2019 - 2024. All rights reserved.