programing

현재 사용자 주문 InWooCommerce에서 주문 ID 가져오기

newsource 2023. 11. 6. 21:53

현재 사용자 주문 InWooCommerce에서 주문 ID 가져오기

상황은 이렇습니다.저는 우커머스 사이트를 마켓플레이스로 사용하고 있습니다.게임을 판매하고 있는데, 구매자 중에 스팀 키를 받는 분들도 있어요.그래서 저는 키 속성 시스템을 연구하고 있기 때문에, 페이지에 들어가면 키는 사용자에게 속성이 될 것입니다.

그것을 위해 현재 사용자가 주문한 모든 것(로그인 및 페이지)을 확인하고 그가 구매한 게임을 확인하고 싶습니다.

여기서 매우 유용한 정보를 발견했습니다.WooCommerce 주문 세부 정보를 가져오는 방법

하지만 현재 사용자의 주문을 모두 받을 수는 없습니다.우선 SQL 요청을 해볼까 생각 중인데, 데이터베이스에서 주문과 사용자의 연결고리를 찾지 못합니다.

단서가 있습니까?

업데이트됨 WooCommerce 3+와의 호환성 추가 (2018년 1월)

모든 고객 주문을 받고 각 고객 주문의 각 항목을 수행하기 위해 필요한 코드는 다음과 같습니다.

## ==> Define HERE the statuses of that orders 
$order_statuses = array('wc-on-hold', 'wc-processing', 'wc-completed');

## ==> Define HERE the customer ID
$customer_user_id = get_current_user_id(); // current user ID here for example

// Getting current customer orders
$customer_orders = wc_get_orders( array(
    'meta_key' => '_customer_user',
    'meta_value' => $customer_user_id,
    'post_status' => $order_statuses,
    'numberposts' => -1
) );


// Loop through each customer WC_Order objects
foreach($customer_orders as $order ){

    // Order ID (added WooCommerce 3+ compatibility)
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

    // Iterating through current orders items
    foreach($order->get_items() as $item_id => $item){

        // The corresponding product ID (Added Compatibility with WC 3+) 
        $product_id = method_exists( $item, 'get_product_id' ) ? $item->get_product_id() : $item['product_id'];

        // Order Item data (unprotected on Woocommerce 3)
        if( method_exists( $item, 'get_data' ) ) {
             $item_data = $item->get_data();
             $subtotal = $item_data['subtotal'];
        } else {
             $subtotal = wc_get_order_item_meta( $item_id, '_line_subtotal', true );
        }

        // TEST: Some output
        echo '<p>Subtotal: '.$subtotal.'</p><br>';

        // Get a specific meta data
        $item_color = method_exists( $item, 'get_meta' ) ? $item->get_meta('pa_color') : wc_get_order_item_meta( $item_id, 'pa_color', true );

        // TEST: Some output
        echo '<p>Color: '.$item_color.'</p><br>';
    }
} 

이 코드는 테스트를 거쳐 작동합니다.


관련:

언급URL : https://stackoverflow.com/questions/42223765/get-the-order-id-from-the-current-user-orders-in-woocommerce