在WooCommerce中显示其他信息之前,请检查尺寸,属性和/或重量

用户10738057

默认情况下,WooCommerce使用选项卡(其他信息,描述和评论),并且通过使用以下代码,我删除了这些选项卡,并使用hook将其内容放入了产品页面woocommerce_after_single_product_summary

正如您在代码中所看到的,我选择不显示“其他信息”内容,因为我无法用下面的代码弄清楚如何实现这一行,从而使它不显示是否没有属性,尺寸或重量。如果有任何这些属性,请显示“附加信息”。

这是我无法进入以下代码的行: if ($product -> has_attributes() || $product -> has_dimensions() || $product -> has_weight()) {

add_action( 'woocommerce_after_single_product_summary', 'cac_remove_product_tabs', 2 );
function cac_remove_product_tabs(){
    remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
    add_action( 'woocommerce_after_single_product_summary', 'cac_display_as_one_product_page', 10 );
}
function cac_display_as_one_product_page() {
    wc_get_template( 'single-product/tabs/description.php' );
    //wc_get_template('single-product/tabs/additional-information.php');
    comments_template();
}

关于如何进行这项工作的任何想法?感谢您的改进想法或技巧。

LoicTheAztec

无需在下面进行解释...

该模板single-product/tabs/additional-information.php使用wc_display_product_attributes()模板功能加载产品的重量,尺寸和产品属性,该功能被钩在woocommerce_product_additional_information动作挂钩中。

function wc_display_product_attributes( $product ) {
    wc_get_template( 'single-product/product-attributes.php', array(
        'product'            => $product,
        'attributes'         => array_filter( $product->get_attributes(), 'wc_attributes_array_filter_visible' ),
        'display_dimensions' => apply_filters( 'wc_product_enable_dimensions_display', $product->has_weight() || $product->has_dimensions() ),
    ) );
}

因此,您可以看到它们先被过滤,然后再由模板显示,在该模板中single-product/product-attributes.php,将通过一些条件检查产品重量,尺寸和产品属性,以免出现空值:

对于重量(在第26行)

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

对于尺寸(在线33)

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

对于产品属性:如果没有产品属性,它将给出一个空数组,并且不会显示任何内容。

因此,您无需使用:

 if ($product -> has_attributes() || $product -> has_dimensions() || $product -> has_weight()) { }

加成

对于标题,如果没有数据可显示,则需要使用:

add_filter( 'woocommerce_product_additional_information_heading', 'custom_product_additional_information_heading' );
function custom_product_additional_information_heading( $heading ) {
    global $product;

    $attributes = array_filter( $product->get_attributes(), 'wc_attributes_array_filter_visible' );

    return $product->has_weight() && $product->has_dimensions() && sizeof($attributes) > 0 ? $heading : false;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Woocommerce中附加其他显示的尺寸和重量单位

woocommerce其他信息选项卡更改尺寸标题

在WooCommerce结帐中显示基于购物车总和的信息,在订单检查表之前

在产品页面上的表格中显示WooCommerce变化数据(尺寸,重量等)

隐藏/显示JavaScript中的其他信息

Woocommerce电子邮件订单详细信息中的其他列和项目值

当设置了多个其他属性时,仅在检查器中显示一个属性

如何使用荣格根据重量(或其他属性)过滤边缘并显示新网络

隐藏Woocommerce中产品变化设置的重量和尺寸字段

在spring MVCproject中显示Jenkins构建号和其他构建信息

WooCommerce:从产品变型中获取自定义字段并将其显示在“其他信息区域”

需要显示其他信息

实体扩展(产品)的图像和价格不会显示在自己的店面模块中,但会显示其他信息

Rails在下拉菜单中显示其他信息

Woocommerce关于产品变化的其他信息

在woocommerce购物车和结帐时显示重量和剩余重量消息

解析之前如何检查XML中属性和标记的存在?

解析之前如何检查XML中属性和标记的存在?

在ASP.NET MVC 4应用程序中检查SSL协议,密码和其他属性

对象的属性未在其他对象中显示

在图的顶点上显示其他信息

在单独的行中显示woocommerce产品尺寸

在WooCommerce产品摘要中显示产品尺寸

WooCommerce购物车验证:检查是否始终在其他产品之前添加特定产品

显示组中的第一个和最后一个mysql记录以及其他属性

在Woocommerce存档页面中显示可用的产品尺寸或尺寸计数

从其他古腾堡块获取信息和属性

Woocommerce其他产品现在显示

在使用routeProvider在Angular中启动路由之前,如何检查登录名或其他状态?