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

Remove product dimensions from single product pages in Woocommerce

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

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

add_filter( 'woocommerce_product_get_dimensions', '__return_false' );

要仅隐藏尺寸 (但不隐藏重量),有 2 种方法让它工作。

1) using hooks (这里是复合过滤器hooks):

查看单品展示维度的模板,可以看到这一行:

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

然后如果你查看 WC_Product has_dimensions() method,你会看到这一行 (其中 $thisWC_Product 对象实例):

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

所以当length、height和with为空(或false)时,方法returns false…

以下使用 复合挂钩 的代码将仅在单个产品页面的 "Additional information" 选项卡中隐藏 维度

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 模板

第一次阅读:Overriding Woocommerce template via the theme.

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

此处相关模板为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; ?>

你也可以使用 css 属性 display:none 如果一切都失败了。