Wie speichert Woocommerce Variationsattribute und wie können sie pro Variation abgerufen werden? [geschlossen]


7

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.


1
Was ist mit $attr = get_post_meta($id, '_product_attributes', true); echo '<pre>'; print_r($attr); echo '</pre>';?
gmazzap

2
Lieber GM, es tut mir leid, dass Sie das alles gelesen haben: Ich habe gerade festgestellt, dass ich eine Weltklasse-Nummer bin und meinen Code auf meiner Testseite ausgeführt habe, aber meine Live-Daten in der MySQL-Datenbank betrachtet habe. Die IDs stimmten also nicht überein. Es tut mir so leid. Sie haben zu 100% Recht, dass get_post_meta die Antwort auf meine Probleme ist. Ich musste nur in der richtigen Datenbank suchen!
Victoria

1
Liebe Victoria, du
bringst

4
Ich muss sagen, es ist wirklich scheiße, dass WooCommerce nicht zum Thema gehört. Es ist eine Plattform, die von Tonnen von Menschen genutzt wird, die Wordpress verwenden. Die Frage ist relevant.
Dave Hilditch

Antworten:


0

Attribute werden in wp_term_relationships gespeichert.

Ex:

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

Produkt 91 hat ein Attribut 48


1
Sie werden auch in einer JSON-Zeichenfolge in wp_postmeta gegen den Schlüssel _product_attributes gespeichert. Vermutlich wurden sie aus Leistungsgründen dupliziert.
Dave Hilditch
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.