在 Woocommerce 中有条件地向购物车商品和订单商品添加 class
Add conditionally a class to cart items and order items in Woocommerce
当相关产品使用 Woocommerce Product add-ons 3+ 插件自定义字段时,我想以不同的方式设置 Woocommerce 购物车和订购商品的样式,因此我需要有条件地添加 class(到购物车商品和订购商品).
但我无法让它工作,使用 _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
您不能创建一个适用于两个挂钩的函数,因为它们具有不同的挂钩参数:
- 钩子
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
是如何保存在订单项目中的。为此,您需要查看数据库 table 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 文件。
当相关产品使用 Woocommerce Product add-ons 3+ 插件自定义字段时,我想以不同的方式设置 Woocommerce 购物车和订购商品的样式,因此我需要有条件地添加 class(到购物车商品和订购商品).
但我无法让它工作,使用 _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
您不能创建一个适用于两个挂钩的函数,因为它们具有不同的挂钩参数:
- 钩子
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
是如何保存在订单项目中的。为此,您需要查看数据库 table 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 文件。