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
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.
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.
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.
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 .
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 );