默认情况下,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();
}
关于如何使这项工作的任何想法?感谢您提出任何改进建议或提示。
没有必要在下面说明......
模板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文件中。经过测试和工作。