你不能为这两个钩子创建一个函数,因为它们有不同的钩子参数:
- 钩子
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,搜索与_wc_pao_addon_name 匹配的meta_key。
一旦您找到正确的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 文件中。它应该适用于订购商品。
检查并获取正确的购物车自定义元数据(仅限测试):
要在购物车对象中找出插件作为 Woocommerce 产品插件添加的自定义元数据的正确元键是什么,您将使用以下 (将在购物车页面中显示购物车项目的原始数据) :
// 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 文件中。