在我更新了WooCommerce之后,属性不再显示。
在模板 content-single-product.php
中,如果我使用 var_dump($attribute_names);
,我会得到一个对象数组。
在 foreach( $attribute_names as $attribute_name )
中,数据的范围是受保护的。
这是该模板的代码:
$attributes = $product->get_attributes();
<?php if($attributes) {echo "<p class='product-desc-title'>Параметры</p>";} ?>
<?php foreach ( $attributes as $attribute ) : ?>
<?php
if ( $attribute['is_taxonomy'] ) {
global $post;
$attribute_names = $attribute;
foreach ( $attribute_names as $attribute_name ) {
$taxonomy = get_taxonomy( $attribute_name );
if ( $taxonomy && ! is_wp_error( $taxonomy ) ) {
$terms = wp_get_post_terms( $post->ID, $attribute_name );
$terms_array = array();
$attrID = $attribute['name'];
$paPMat = 'pa_product-material';
$paPColor = 'pa_product-color';
// При добавлении новых атрибутов для товаров добавить новый массив с названием атрибута и слагом с приставкой "pa_"
$pAttributes_array = array(
array(
'label' => 'Материал фасадов',
'slug' => 'pa_product-material',
),
array(
'label' => 'Цвет',
'slug' => 'pa_product-color',
),
array(
'label' => 'Конфигурация',
'slug' => 'pa_konfiguraciya',
),
array(
'label' => 'Материал корпуса',
'slug' => 'pa_material-kuxni',
),
array(
'label' => 'Форма',
'slug' => 'pa_forma',
),
array(
'label' => 'Тип дверей',
'slug' => 'pa_tip-dverej',
),
array(
'label' => 'Створки',
'slug' => 'pa_stvorki',
),
array(
'label' => 'Размеры',
'slug' => 'pa_razmery',
),
);
foreach ($pAttributes_array as $key => $value) {
if ( ! empty( $terms ) && $attrID === $value['slug'] ) {
foreach ( $terms as $term ) {
$archive_link = get_term_link( $term->slug, $attribute_name );
$full_line = '<a href="' . $archive_link . '">'. $term->name . '</a>';
array_push( $terms_array, $full_line );
}
echo '<p class="pa-string">'. $value['label'] .': '. implode( $terms_array, ', ' ) . '</p>';
}
}
}
}
} else {
$values = array_map( 'trim', explode( '|', $attribute['value'] ) );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
}
?>
<?php endforeach; ?>