从Woocommerce单个产品页面中移除产品尺寸

3

有人知道如何在单个产品页面的附加选项卡中隐藏产品尺寸,但仍然显示重量值吗?

我搜索并看到这个过滤器,但它会隐藏重量和尺寸。

add_filter( 'woocommerce_product_get_dimensions', '__return_false' );

try to do it with custom CSS - Ivnhal
嗨,这行的css是<tr> <th>尺寸</th> <td class="product_dimensions">156 x 56 x 16 厘米</td> </tr> 我可以隐藏带有类的<td>,但不知道如何隐藏这些<tr>你有什么建议吗? - phraisohn
你能否通过发布你产品的整个CSS来更新你的答案? - Ivnhal
我已经使用了覆盖Woocommerce模板的方法,现在它可以正常工作了。感谢您的帮助 :) @IvnH - phraisohn
我对你删除的问题有一个答案...如果你愿意,你可以重新发布它,我会回答它(如果是这种情况,请在这里通知我)。 - LoicTheAztec
@LoicTheAztec 对于这个问题,我尝试了很多方法,但都没有成功。后来我发现这是因为WooCommerce的第三方支付插件只会在订单状态为“处理中”时覆盖库存状态以减少库存。如果您有任何建议,对于这种情况将非常感激。我已经重新发布了。谢谢。 - phraisohn
2个回答

7

只隐藏尺寸而不隐藏重量,有两种方法可以实现。

1) 使用钩子 (这里是复合过滤器钩子):

查看显示单个产品尺寸的模板,你会看到这一行:

<?php if ( $display_dimensions && $product->has_dimensions() ) : ?>

如果您查看WC_Product has_dimensions()方法,您会看到这行代码(其中$thisWC_Product对象实例):

return ( $this->get_length() || $this->get_height() || $this->get_width() ) && ! $this->get_virtual();

当长度、高度和宽度为空(或为假)时,该方法返回false...
以下使用组合钩子的代码将仅从单个产品页面的“附加信息”选项卡中隐藏尺寸
add_filter( 'woocommerce_product_get_width', 'hide_single_product_dimentions', 25, 2 );
add_filter( 'woocommerce_product_get_height', 'hide_single_product_dimentions', 25, 2 );
add_filter( 'woocommerce_product_get_length', 'hide_single_product_dimentions', 25, 2 );
function hide_single_product_dimentions( $value, $product ){
    // Only on single product pages
    if( is_product() )
        $value = '';

    return $value;
} 

将代码放在您的活动子主题(或活动主题)的function.php文件中。 经过测试有效。

To hide weight (just for info) use this composite hook code:

add_filter( 'woocommerce_product_get_weight', 'hide_single_product_weight', 25, 2 );
  function hide_single_product_weight( $value, $product ){
    // Only on single product pages
    if( is_product() )
        $value = '';

    return $value;
}

2) 通过活动主题覆盖 Woocommerce 模板:

首先阅读:通过主题覆盖 Woocommerce 模板

它解释了如何在编辑模板之前将模板复制到您的主题中。

这里相关的模板是single-product/product-attributes.php

您需要从模板代码中删除此块(从第33行到第38行):

<?php if ( $display_dimensions && $product->has_dimensions() ) : ?>
    <tr>
        <th><?php _e( 'Dimensions', 'woocommerce' ) ?></th>
        <td class="product_dimensions"><?php echo esc_html( wc_format_dimensions( $product->get_dimensions( false ) ) ); ?></td>
    </tr>
<?php endif; ?>

它显示尺寸。无法适用我们该如何移除这个 tr 行? - phraisohn
你给我的代码是去掉一个维度,但如何删除所有行呢? - phraisohn
@phraisohn 如果尺寸未定义(如果您使用我的代码,则是这种情况),则不应显示与尺寸相关的任何内容。我认为您的主题正在覆盖woocommerce模板,可能是模板single-product/product-attributes.php已过时...您可以在Woocommerce>状态中检查,在“模板覆盖”部分的页面底部进行检查。 - LoicTheAztec
是的,模板已经过时了,可能是因为我创建了新的自定义维度来显示在条件选项卡中。这就是为什么它显示了我的产品的两个维度。因此,我想隐藏WooCommerce中单页原始维度,但仍然需要用它来计算运费价格。也许我会使用CSS来隐藏这一行,看看是否有效。 - phraisohn
更新了。是的,我删除了那个模板文件中的代码,现在它按照我的需求工作了。非常感谢 :) - phraisohn

1
如果其他方法都失败了,您也可以使用CSS属性display:none

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接