web-dev-qa-db-fra.com

où est une commande woocommerce placé dans la base de données wordpress

J'ai une question très simple. mais sa me dérange beaucoup. 

Quelqu'un peut-il me dire où se trouve une commande et chaque élément de celle-ci est stocké dans la base de données après avoir été placé sur un site Web WordPress Woo-Commerce. Pour être plus précis, quelqu'un peut-il me dire comment puis-je obtenir mon adresse de livraison sans utiliser des classes woocommerce telles que la classe WC_Order? Je veux dire que je dois obtenir ces données manuellement via mes requêtes de base de données personnalisées, mais je n'arrive pas à trouver la commande et tout ce qui y est associé dans ma base de données? Je sais que la commande est stockée dans la base de données en tant que poste dans la table wp-posts mais où se trouve le reste: adresse de facturation, adresse de livraison, etc., etc.? J'espère que je ne déroute personne.

Meilleures salutations,

MAK

13
MAK

Les commandes sont un type de publication personnalisé (CPT), elles sont donc stockées dans la table wp_posts. Si vous recherchez 'shop_order' dans le champ post_type, SQL récupérera toutes les commandes.

Ensuite, vous devez rechercher dans la table wp_postmeta tous les enregistrements dont post_id correspond à l'id de la commande post. Parmi les champs que vous trouverez ensuite dans la table wp_postmeta figurent les adresses de livraison et de facturation complètes.

23
Patrick McCormick

Les données de commande seront également stockées dans les tables woocommerce_order_items et woocommerce_order_itemmeta (pour WooCommerce> 2.5 Je crois). Ces tables contiennent des informations relatives au produit réel acheté par le client.

Les entrées de poste shop_order ont le post_id qui correspond à order_id dans woocommerce_order_items. Order_item_id dans woocommerce_order_items correspond à order_item_id dans woocommerce.order_itemmeta. 

7
gunnerman

Cette requête devrait pouvoir vous aider. Il vous suffit de changer le préfixe de la base de données pour votre propre base de données:

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";

Je viens de l'écrire et je peux voir l'adresse électronique, l'adresse de facturation, le nom, le montant de l'achat, etc.

2
Cristian Melendez
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

Source ici .

2
Fahad Uddin

Je peux confirmer que les commandes woocommerce sont un type d'article personnalisé afin qu'elles soient stockées dans wp_posts.

Les commandes WooCommerce sont des "publications personnalisées". Elles sont stockées dans "wp_posts" sous "post_type" -> "" shop_order ".

si vous souhaitez sélectionner les commandes de magasin avec requête SQL, vous pouvez procéder comme ci-dessous.

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