I want to hide specific variations from the cart page in Woocommerce, I was able to hide all the variation names but I want to keep 3 that need to be shown. The following code shows all the variations in the cart page, would someone know how to apply a filter in here?
<dl class="variation">
<?php foreach ( $item_data as $data ) : ?>
<dt class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( $data['key'] ); ?>: </dt>
<dd class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></dd>
<?php endforeach; ?>
</dl>
For example I need to hide one of these:
<dt class="variation-Kcalperdag">Kcal per dag:</dt>
<dd class="variation-Kcalperdag"><p>1641</p> </dd>
2
Answers
You were not that far! You were just missing a simple conditional statement inside that
foreach
loop. Something likeif ( $data['key'] !== 'Kcalperdag' ):
should do the trick.I’ve tested it with a bogus
array
and it seems perfect.We use the
$data['key']
as a condition to chose if we want to display or not our content.To hide specific(s) product variation attribute(s) displayed in cart (and checkout), you can use dedicated filter hook
woocommerce_get_item_data
as follows:Code goes in functions.php file of the active child theme (or active theme). Tested and works.