我想隐藏 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 文件中。已测试并有效。
我认为该过滤器不再适用于当前的 Woocommerce 版本。有人有解决办法吗?