Reputation: 69
I need to add a suffix text to the price of a woocommerce product from a specific category while on WooCommerce cart.
Here is my code:
add_filter( 'woocommerce_cart_item_price', 'filter_woocommerce_cart_item_price', 10, 3 );
add_filter( 'woocommerce_cart_item_subtotal', 'filter_woocommerce_cart_item_price', 10, 3 );
function filter_woocommerce_cart_item_price( $wc, $cart_item, $cart_item_key ) {
if(!in_array('67',$cart_item['data']->get_category_ids()))
{
return $wc;
}
else{
return $wc . ' Monthly';
}
};
The problem is it only works on simple products. Doesn't seem to affect the prices of variable products (I tested on 3 different sites).
Any idea what I'm missing?
Upvotes: 2
Views: 445
Reputation: 253784
To make it work for product variations items in cart too, use instead the following:
add_filter( 'woocommerce_cart_item_price', 'cart_item_amounts_prefix', 10, 3 );
add_filter( 'woocommerce_cart_item_subtotal', 'cart_item_amounts_prefix', 10, 3 );
function cart_item_amounts_prefix( $amount, $cart_item, $cart_item_key ) {
if( has_term( array(67), 'product_cat', $cart_item['product_id'] ) ){
$amount .= ' ' . __("Monthly", "woocommerce");
}
return $amount;
}
Code goes in functions.php file of the active child theme (or active theme). Tested and works.
Upvotes: 3