とても簡単な質問があります。しかし、それは私をたくさん悩ませます。
WordPress woo-commerce website。より正確には誰でも私に教えてくれます。 WC_Orderクラスなどのwoocommerceクラスを使用せずに配送先住所を取得できますか?カスタムデータベースクエリを使用して手動でそのデータを取得する必要がありますが、データベースで注文とそれに関連するすべてを見つけることができませんか?データベースはwp-postsテーブルにポストとしてありますが、残りはどこにありますか(配送先住所、請求先住所など)?誰も混乱させないでください。
宜しくお願いします、
MAK
注文はカスタム投稿タイプ(CPT)であるため、wp_postsテーブルに保存されます。 post_typeフィールドで「shop_order」を検索すると、SQLはすべての注文を取得します。
次に、post_idが注文投稿のIDと一致するすべてのレコードをwp_postmetaテーブルで検索する必要があります。 wp_postmetaテーブルのフィールドには、配送先住所と請求先住所全体が含まれます。
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
ソース ここ 。
また、注文データはwoocommerce_order_itemsおよびwoocommerce_order_itemmetaテーブルに保存されます(WooCommerce> 2.5の場合)これらのテーブルには、顧客が実際に購入した製品に関するものが含まれています。
Shop_order投稿エントリには、woocommerce_order_itemsのorder_idと一致するpost_idがあります。 woocommerce_order_itemsのorder_item_idは、woocommerce.order_itemmetaのorder_item_idと一致します。
このクエリはあなたを助けることができるはずです。独自のDBのDBプレフィックスを変更するだけです。
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";
書いたばかりで、メール、請求先住所、名前、購入金額などを見ることができます。正確なアイテムと金額が表示されなかったので、追加のクエリが必要な場合があります。
Woocommerceの注文はカスタムの投稿タイプであり、wp_postsに保存されていることを確認できます。
WooCommerceの注文は「カスタムポスト」であり、「post_type」->「shop_order」の下の「wp_posts」に保存されます。
sQLクエリで製造指図を選択する場合は、次のようなことができます。
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'shop_order'", ARRAY_A );