我想在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文件中。