【问题标题】:Hide specific variation attributes displayed in WooCommerce cart items隐藏 WooCommerce 购物车项目中显示的特定变体属性
【发布时间】:2021-01-21 15:01:35
【问题描述】:

我想隐藏 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


    【解决方案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>
    

    【讨论】:

    • 感谢您的回答和时间,但不幸的是它不起作用。它仍然显示输出的变化。 if 函数中不需要 style="display: none" 之类的东西吗?
    • 否,因为它没有从数据库中获取值。使sure !== 'Kcalperdag' 是正确的句柄,但它应该可以工作。它对我有用。
    • 谢谢你成功了!只剩下一个问题,我尝试添加多个 if 语句来隐藏其他变体,只是它复制了所有信息。关于如何添加其他变体的任何提示?谢谢!
    • if ( $data['key'] !== 'Kcalperdag' || $data['key'] !== 'Some_Other_Key_1' || $data['key'] !== 'Some_Other_Key'_2 ): ... etc. 双竖线 (||) 表示“或”。
    • 通过替换 || 修复了它有&&,谢谢你的帮助!
    【解决方案2】:

    要在购物车(和结帐)中隐藏显示的特定产品变体属性,您可以使用专用过滤钩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 文件中。经过测试并且可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 2018-07-11
      • 2018-09-05
      • 2019-05-19
      • 2019-05-25
      • 2020-08-09
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多