it-swarm.com.ru

где заказ woocommerce размещен в базе данных WordPress

У меня очень простой вопрос. но меня это сильно беспокоит. 

Может ли кто-нибудь, пожалуйста, скажите мне, где находится заказ, и каждая вещь в нем хранится в базе данных после ее размещения на веб-сайте WordPress woo-commerce. Если быть более точным, может кто-нибудь сказать мне, как я могу получить свой адрес доставки, не используя классы woocommerce, такие как класс WC_Order? Я имею в виду, что мне нужно получать эти данные вручную с помощью пользовательских запросов к базе данных, но я не могу найти порядок и все, что с ним связано, в моей базе данных? Я знаю, что заказ хранится в базе данных как post в таблице wp-posts, но где же он находится: адрес доставки, адрес для выставления счета и т.д. И т.д.? Надеюсь, я никого не путаю.

С уважением,

MAK

13
MAK

Заказы - это пользовательский тип записи (CPT), поэтому они хранятся в таблице wp_posts. Если вы ищете в поле post_type «shop_order», SQL получит все заказы.

Затем вы должны найти в таблице wp_postmeta все записи с post_id, совпадающим с идентификатором поста заказа. Среди полей, которые вы найдете в таблице wp_postmeta, будут все адреса доставки и выставления счетов.

23
Patrick McCormick

Кроме того, данные заказа будут храниться в таблицах woocommerce_order_items и woocommerce_order_itemmeta (для WooCommerce> 2,5, я полагаю). Эти таблицы содержат данные, относящиеся к фактическому продукту, который купил клиент.

Записи записей shop_order имеют post_id, который соответствует order_id в woocommerce_order_items. Order_item_id в woocommerce_order_items совпадает с order_item_id в woocommerce.order_itemmeta. 

7
gunnerman

Этот запрос должен быть в состоянии помочь вам. Вам просто нужно изменить префикс БД для вашей собственной БД:

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

Я только что написал, и я могу видеть электронную почту, платежный адрес, имя, сумму покупки и т.д. Я не видел точные пункты и сумму, возможно, необходимы дополнительные запросы.

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

Источник здесь .

2
Fahad Uddin

Я могу подтвердить, что заказы woocommerce являются пользовательским типом записи, поэтому они хранятся в wp_posts.

Заказы WooCommerce - это "пользовательские записи", они хранятся в "wp_posts" в "post_type" -> "" shop_order "

если вы хотите выбрать заказы магазина с помощью SQL-запроса, вы можете сделать что-то вроде ниже.

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