prosource

여기서 woocommerce 순서는 wordpress 데이터베이스에 배치됩니다.

probook 2023. 2. 12. 18:02
반응형

여기서 woocommerce 순서는 wordpress 데이터베이스에 배치됩니다.

WordPress woo-commerce 웹사이트에서 주문과 그 안에 있는 모든 것을 데이터베이스 어디에 저장합니까?좀 더 정확히 말하면, WC_Order class와 같은 woocommerce class를 이용하지 않고 배송지 주소를 어떻게 알 수 있을까요?즉, 커스텀 데이터베이스 쿼리를 통해 해당 데이터를 수동으로 가져와야 하는데 데이터베이스에서 순서와 관련된 모든 데이터를 찾을 수 없습니다.주문은 wp-posts 테이블에서 post로 데이터베이스에 저장되어 있는 것으로 알고 있습니다만, 배송지 청구처 주소 등은 어디에 있습니까?

주문은 CPT(Custom Post Type)이므로 wp_posts 테이블에 저장됩니다.post_type 필드에서 shop_order를 검색하면 SQL은 모든 주문을 가져옵니다.

그런 다음 wp_postmeta 테이블에서 주문 포스트 ID와 일치하는 post_id를 가진 모든 레코드를 검색해야 합니다.그러면 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_itemeta 테이블에 저장됩니다(WooCommerce > 2.5인 것 같습니다).이 표에는 고객이 구입한 실제 제품과 관련된 내용이 기재되어 있습니다.

shop_order post 엔트리의 post_id는 woocommerce_order_items의 order_id와 일치합니다.woocommerce_order_items의 order_item_id는 woocommerce.order_itemmeta의 order_item_id와 일치합니다.

woocommerce 오더는 커스텀 포스트 타입이므로 wp_posts에 저장되어 있음을 확인할 수 있습니다.

WooCommerce 주문은 "custom post"로 "post_type" -> "shop_order" 아래의 "wp_posts"에 저장됩니다.

만약 당신이 sql 쿼리로 샵 오더를 선택하고 싶다면 다음과 같이 할 수 있습니다.

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

이 쿼리가 도움이 될 것입니다.자신의 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";

방금 썼는데 이메일, 청구처 주소, 이름, 구매금액 등이 보입니다.정확한 품목과 수량을 보지 못했는데, 추가 조회가 필요할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/23977298/where-is-a-woocommerce-order-placed-in-wordpress-database

반응형