我想不同的风格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
你不能让一个函数,对于这两种挂钩工作,因为他们有不同的钩参数:
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文件。它应该工作的订单项目。
为了找出车对象什么是通过插件,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文件。