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

问题描述 投票:1回答:1

默认情况下,WooCommerce使用标签(附加信息,描述和评论),并使用下面的代码,我删除了标签,并使用钩子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();
}

关于如何使这项工作的任何想法?感谢您提出任何改进建议或提示。

php wordpress woocommerce product dimensions
1个回答
0
投票

没有必要在下面说明......

模板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文件中。经过测试和工作。

© www.soinside.com 2019 - 2024. All rights reserved.