반응형
Woocommerce 3에서 제품 속성 가져오기
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; ?>
갱신일 :테스트를 위해 코드 압축:
$attributes = $product->get_attributes();
foreach ( $attributes as $attribute ):
$attribute_names = $attribute;
// testing output
var_dump($attribute_name);
endforeach;
그var_dump($attribute_name);
raw 출력은 오브젝트인 오브젝트에 대한 표시를 제공합니다.즉, 이 클래스에 사용할 수 있는 메서드를 사용해야 합니다.
두 가지 방법이 있습니다.
1) 다음과 같은 방법으로 보호되지 않은 어레이 속성에 액세스할 수 있습니다.
$attributes = $product->get_attributes();
foreach ( $attributes as $attribute ):
$attribute_data = $attribute->get_data();
// testing pre-formatted output
echo '<pre>'; print_r($attribute_data); echo '</pre>';
// We stop the loop to get the first object only (for testing)
break;
endforeach;
그러면 다음과 같은 원시 출력이 제공됩니다.
Array (
[id] => 1
[name] => pa_color
[options] => Array (
[0] => 8
[1] => 9
)
[position] => 0
[visible] =>
[variation] => 1
[is_visible] => 0
[is_variation] => 1
[is_taxonomy] => 1
[value] =>
)
그런 다음 다음과 같이 사용할 수 있습니다.
$attributes = $product->get_attributes();
foreach ( $attributes as $attribute ):
$attribute_data = $attribute->get_data(); // Get the data in an array
$attribute_name = $attribute_data['name']; // The taxonomy slug name
$attribute_terms = $attribute_data['options']; // The terms Ids
endforeach;
2) 다음과 같은 방법을 사용할 수 있습니다.
$attributes = $product->get_attributes();
foreach ( $attributes as $attribute ):
$attribute_name = $attribute->get_taxonomy(); // The taxonomy slug name
$attribute_terms = $attribute->get_terms(); // The terms
$attribute_slugs = $vaattributeues->get_slugs(); // The term slugs
endforeach;
언급URL : https://stackoverflow.com/questions/47542209/get-product-attributes-in-woocommerce-3
반응형
'source' 카테고리의 다른 글
1and1 공유 호스트 WordPress 사이트에서 gzip을 작동시키는 방법 (0) | 2023.03.20 |
---|---|
약속에서 데이터를 반환하는 방법 (0) | 2023.03.20 |
JSON 개체를 만들고 복제하는 방법 (0) | 2023.03.15 |
AngularJS: 동적으로 추가된 필드가 FormController에 등록되지 않았습니다. (0) | 2023.03.15 |
Angular 템플릿에 코멘트(출력 HTML이 아닌 개발자용)를 추가하려면 어떻게 해야 합니까? (0) | 2023.03.15 |