Skip to content
Advertisement

Hide specific variation attributes displayed in WooCommerce cart items

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>

Advertisement

Answer

You were not that far! You were just missing a simple conditional statement inside that foreach loop. Something like if ( $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.

<dl class="variation">
<?php
foreach ( $item_data as $data ):
if ( $data['key'] !== 'Kcalperdag' ): ?>
  <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 endif;
endforeach; ?>
</dl>
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement