wake-up-neo.com

wo befindet sich eine Woocommerce-Bestellung in der WordPress-Datenbank

Ich habe eine sehr einfache Frage. aber es stört mich sehr. 

Kann mir jemand bitte sagen, wo eine Bestellung abläuft und alles darin in der Datenbank gespeichert wird, nachdem sie von einer WordPress-Woo-Commerce-Website platziert wurde. Genauer gesagt, kann mir jemand sagen, wie ich meine Lieferadresse erhalten kann, ohne Woocommerce-Klassen wie die WC_Order-Klasse zu verwenden? Ich meine, ich muss diese Daten manuell durch meine benutzerdefinierten Datenbankabfragen abrufen, aber ich kann die Reihenfolge und alles, was damit in meiner Datenbank verbunden ist, nicht finden. Ich weiß, dass die Bestellung in der Datenbank als Post in der Tabelle "wp-posts" gespeichert ist, aber wo befindet sich der Rest, d. H. Ich hoffe, ich verwirre niemanden.

Freundliche Grüße,

MAK

13
MAK

Bestellungen sind eine benutzerdefinierte Postart (CPT), also werden sie in der Tabelle wp_posts gespeichert. Wenn Sie das Feld post_type nach 'shop_order' durchsuchen, ruft SQL alle Bestellungen ab.

Dann müssen Sie die Tabelle "wp_postmeta" nach allen Datensätzen durchsuchen, wobei "post_id" mit der ID des Bestellpostens übereinstimmt. In der Tabelle wp_postmeta finden Sie dann die gesamten Versand- und Rechnungsadressen.

23

Die Bestelldaten werden auch in den Tabellen woocommerce_order_items und woocommerce_order_itemmeta gespeichert (für WooCommerce> 2.5, glaube ich). Diese Tabellen enthalten Dinge, die sich auf das Produkt beziehen, das der Kunde gekauft hat.

Die post_id-Einträge für shop_order haben die post_id, die mit order_id in woocommerce_order_items übereinstimmt. Die order_item_id in woocommerce_order_items stimmt mit der order_item_id in woocommerce.order_itemmeta überein. 

7
gunnerman

Diese Abfrage sollte Ihnen helfen können. Sie müssen nur das DB-Präfix für Ihre eigene DB ändern:

SELECT * 
FROM 
  adolfoma_comoconq_wp470.wpkn_postmeta 
  INNER JOIN 
  adolfoma_comoconq_wp470.wpkn_posts 
  ON adolfoma_comoconq_wp470.wpkn_posts.ID=adolfoma_comoconq_wp470.wpkn_postmeta.post_id 
where adolfoma_comoconq_wp470.wpkn_posts.post_type ="shop_order";

Ich habe es gerade geschrieben, und ich kann E-Mail, Rechnungsadresse, Name, Einkaufsbetrag usw. sehen. Ich habe nicht die genauen Artikel und den Betrag gesehen, möglicherweise ist eine zusätzliche Abfrage erforderlich.

2
select
    p.ID as order_id,
    p.post_date,
    max( CASE WHEN pm.meta_key = '_billing_email' and p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
    max( CASE WHEN pm.meta_key = '_billing_first_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
    max( CASE WHEN pm.meta_key = '_billing_last_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
    max( CASE WHEN pm.meta_key = '_billing_address_1' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
    max( CASE WHEN pm.meta_key = '_billing_address_2' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_2,
    max( CASE WHEN pm.meta_key = '_billing_city' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_city,
    max( CASE WHEN pm.meta_key = '_billing_state' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_state,
    max( CASE WHEN pm.meta_key = '_billing_postcode' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_postcode,
    max( CASE WHEN pm.meta_key = '_shipping_first_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_first_name,
    max( CASE WHEN pm.meta_key = '_shipping_last_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_last_name,
    max( CASE WHEN pm.meta_key = '_shipping_address_1' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_1,
    max( CASE WHEN pm.meta_key = '_shipping_address_2' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_2,
    max( CASE WHEN pm.meta_key = '_shipping_city' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_city,
    max( CASE WHEN pm.meta_key = '_shipping_state' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_state,
    max( CASE WHEN pm.meta_key = '_shipping_postcode' and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_postcode,
    max( CASE WHEN pm.meta_key = '_order_total' and p.ID = pm.post_id THEN pm.meta_value END ) as order_total,
    max( CASE WHEN pm.meta_key = '_order_tax' and p.ID = pm.post_id THEN pm.meta_value END ) as order_tax,
    max( CASE WHEN pm.meta_key = '_paid_date' and p.ID = pm.post_id THEN pm.meta_value END ) as paid_date,
    ( select group_concat( order_item_name separator '|' ) from wp_woocommerce_order_items where order_id = p.ID ) as order_items
from
    wp_posts p 
    join wp_postmeta pm on p.ID = pm.post_id
    join wp_woocommerce_order_items oi on p.ID = oi.order_id
where
    post_type = 'shop_order' and
    post_date BETWEEN '2015-01-01' AND '2015-07-08' and
    post_status = 'wc-completed' and
    oi.order_item_name = 'Product Name'
group by
    p.ID

Quelle hier .

2
Fahad Uddin

Ich kann bestätigen, dass es sich bei Woocommerce-Bestellungen um einen benutzerdefinierten Post-Typ handelt, so dass sie in wp_posts gespeichert werden.

WooCommerce-Bestellungen sind "Custom Post", sie werden in "WP_posts" unter "post_type" -> "" shop_order "gespeichert.

wenn Sie Geschäftsaufträge mit SQL-Abfrage auswählen möchten, können Sie wie folgt vorgehen.

global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'shop_order'", ARRAY_A );
1
Nitesh Gour