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

问题描述 投票:0回答:3

我想隐藏 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>
php wordpress woocommerce cart
3个回答
1
投票

你还没有那么远!您只是在

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>

1
投票

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

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 文件中。已测试并有效。


0
投票

我认为该过滤器不再适用于当前的 Woocommerce 版本。有人有解决办法吗?

© www.soinside.com 2019 - 2024. All rights reserved.