隐藏 WooCommerce 购物车项目中显示的特定变体属性

Hide specific variation attributes displayed in WooCommerce cart items

我想在 Woocommerce 的购物车页面中隐藏特定变体,我能够隐藏所有变体名称,但我想保留 3 个需要显示的变体。以下代码显示了购物车页面中的所有变体,有人知道如何在此处应用过滤器吗?

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

例如我需要隐藏其中之一:

<dt class="variation-Kcalperdag">Kcal per dag:</dt>
<dd class="variation-Kcalperdag"><p>1641</p> </dd>

你并没有那么远!您只是在 foreach 循环中缺少一个简单的条件语句。 if ( $data['key'] !== 'Kcalperdag' ): 之类的东西应该可以解决问题。 我用伪造的 array 测试了它,它看起来很完美。

我们使用 $data['key'] 作为条件来选择是否要显示我们的内容。

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

要在购物车(和结帐)中隐藏显示的特定产品变体属性,您可以使用专用过滤器挂钩 woocommerce_get_item_data,如下所示:

add_filter( 'woocommerce_get_item_data', 'filter_cart_item_data', 10, 2 );
function filter_cart_item_data( $cart_data, $cart_item ) {
    // Loop through cart item additional displayed data
    foreach ( $cart_data as $key => $values ) {
        // Target "Kcalperdag" attribute from its displayed label name
        if ( $values['key'] === 'Kcal per dag' ) {
            unset($cart_data[$key]); // Remove attribute from the array
        }
    }

    return $cart_data;
}

代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。