【问题标题】:Remove product dimensions from single product pages in Woocommerce从 Woocommerce 中的单个产品页面中删除产品尺寸
【发布时间】:2019-02-11 11:19:24
【问题描述】:

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

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

add_filter( 'woocommerce_product_get_dimensions', '__return_false' );

【问题讨论】:

  • 尝试使用自定义 CSS 来实现
  • 嗨,这一行的 css 是 Dimensions 156 x 56 x 16 cm 我可以用 has class 隐藏 td。但是不知道怎么隐藏这些 tr 有什么建议吗?
  • 您能否通过发布产品的整个 CSS 来更新您的答案?
  • 我使用过覆盖 Woocommerce 模板,现在它可以工作了。谢谢你的帮助:) @IvnH
  • 我有一个your deleted question 的答案...如果你喜欢你可以重新发布它,我会回答它(如果是这种情况,请在此处通知我)。

标签: wordpress templates woocommerce product dimensions


【解决方案1】:

要仅隐藏尺寸 (但不隐藏重量),有 2 种方法可以使其发挥作用。

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

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

<?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)时,该方法返回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 文件中。经过测试并且可以工作。

隐藏重量 (仅供参考)使用此复合挂钩代码:

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; ?>

【讨论】:

  • 它显示维度。 N/A 我们如何删除这个 tr 行?
  • imgur.com/a/FgK56yx 你给我的代码是删除维度但是如何删除所有行?
  • @phraisohn 它不应该好像没有定义尺寸(如果您使用我的代码就是这种情况),它不显示与尺寸相关的任何内容。我认为您的主题正在覆盖 woocommerce 模板,并且可能是模板 single-product/product-attributes.php 已过时......您可以在“模板覆盖”部分的页面末尾的 Woocommerce > 状态中进行检查。
  • 是的。该模板已过时,可能是因为我创建了新的自定义维度以显示在条件选项卡中。这就是为什么它显示了我的产品的两个维度。因此,我想在单页中隐藏 WooCommerce 附带的主要原始维度,但仍需要用于计算运费。也许我会使用 CSS 隐藏这一行,看看它是否有效。
  • 已更新。是的,我删除了该模板文件中的代码,它可以按我的需要工作。非常感谢:)
【解决方案2】:

如果其他一切都失败了,您也可以使用 css 属性 display:none

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2016-11-22
    • 2014-04-06
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多