Làm thế nào để Wooc Commerce lưu trữ các thuộc tính biến thể và làm thế nào chúng có thể được truy xuất theo từng biến thể? [đóng cửa]


7

Tôi đang cố gắng rút ra một danh sách các biến thể sản phẩm từ bản cài đặt Wooc Commerce, với các thuộc tính của chúng - đại loại như thế này:

product id  variationid    name      color  size
5           1234           swimsuit  blue   10
5           1235           swimsuit  blue   12
5           1236           swimsuit  blue   14
5           1237           swimsuit  red    10

Tôi có thể lấy ID biến thể và ID sản phẩm và tên sản phẩm như thế này:

<?php
// Get the variations
$args = array( 'post_type' => 'product_variation');
$variationloop = new WP_Query( $args );
while ( $variationloop->have_posts() ) : $variationloop->the_post();
// get the parent of each variation
$parent = get_post($post->post_parent); 
// is the parent product live? 
if ($parent->post_status=="publish")
{
$parentid=$post->post_parent;
 echo $parentid;  // product
 echo $id; // variation id
 echo $parent->post_title;  // product name
}
?>

Mặc dù vậy, điều tôi không thể hiểu được là cách Wooc Commerce liên kết một biến thể với một thuộc tính, chẳng hạn như kích thước. Nếu tôi làm điều này:

 $sizes = get_the_terms($parentid ,'pa_size');
 foreach ( $sizes as $size ) {
   echo $size->name;
 }

sau đó tôi có thể nhận được tất cả các kích thước mà sản phẩm có thể có sẵn, nhưng tôi không thể tìm cách lấy lại kích thước chỉ liên quan đến biến thể 1234.


1
Thế còn $attr = get_post_meta($id, '_product_attributes', true); echo '<pre>'; print_r($attr); echo '</pre>';?
gmazzap

2
GM thân mến, tôi rất tiếc vì đã khiến bạn đọc tất cả những điều đó: Tôi mới nhận ra rằng tôi là một người tầm cỡ thế giới và đang chạy mã của tôi trên trang web thử nghiệm của mình, nhưng nhìn vào dữ liệu trực tiếp của tôi trong cơ sở dữ liệu MySQL. Vì vậy, ID không khớp. Tôi rât tiêc. Bạn đúng 100% rằng get_post_meta là câu trả lời cho tai ương của tôi, tôi chỉ cần tìm trong cơ sở dữ liệu được đánh dấu bên phải!
Victoria

1
Victoria thân mến, bạn làm tôi cười :)
gmazzap

4
Tôi phải nói rằng, nó thực sự hút thái độ stackexchange rằng WooC Commerce không có chủ đề. Đó là một nền tảng, được sử dụng bởi hàng tấn người sử dụng Wordpress. Câu hỏi có liên quan.
Dave Hilditch

Câu trả lời:


0

Các thuộc tính được lưu trữ trên wp_term_relationships.

Ví dụ:

+--------------+-------------------+-------------------+
| object_id    | term_taxonomy_id  | term_taxonomy_id  |
+--------------+-------------------+-------------------+
| 91           | 48                | 0                 |
+--------------+-------------------+-------------------+

Sản phẩm 91 có thuộc tính 48


1
Chúng cũng được lưu trữ trong một chuỗi JSON trong wp_postmeta dựa vào khóa _product_attribut. Có lẽ họ trùng lặp vì lý do hiệu suất.
Dave Hilditch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.