Ich versuche, eine Liste von Produktvarianten aus einer Woocommerce-Installation mit ihren Attributen herauszuholen - ungefähr so:
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
Ich kann die Variations-ID und die Produkt-ID sowie den Produktnamen wie folgt abrufen:
<?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
}
?>
Was ich jedoch nicht herausfinden kann, ist, wie Woocommerce eine Variation mit einem Attribut wie der Größe verknüpft. Wenn ich das mache:
$sizes = get_the_terms($parentid ,'pa_size');
foreach ( $sizes as $size ) {
echo $size->name;
}
Dann kann ich alle Größen abrufen, in denen das Produkt verfügbar sein könnte, aber ich kann nicht herausfinden, wie ich die Größe abrufen kann, die nur der Variation 1234 zugeordnet ist.
$attr = get_post_meta($id, '_product_attributes', true); echo '<pre>'; print_r($attr); echo '</pre>';
?Antworten:
Attribute werden in wp_term_relationships gespeichert.
Ex:
Produkt 91 hat ein Attribut 48
quelle