Нет необходимости в том, что объяснено ниже…
Шаблон single-product/tabs/additional-information.php
загружает вес продукта, размеры и атрибуты продукта, используя шаблонную функцию wc_display_product_attributes()
, которая подключаетсяв woocommerce_product_additional_information
action hook.
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 вашей активной дочерней темы (oАктивная тема).Проверено и работает.