Search code examples
phpwordpresswoocommercecart

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>

Solution

  • 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>