簡體   English   中英

顯示 Woocommerce 客戶購買的簡單產品

[英]Display Woocommerce purchased simple products by customer

我通過用戶登錄在他們的帳戶頁面中顯示購買的產品。 我使用此鏈接https://www.codesd.com/item/woocommerce-list-all-the-products-previously-ordered.html上的說明實現了它。 我想只顯示產品類型為“簡單”的購買產品,而不是顯示所有購買的產品。

我使用了以下查詢:

global $wpdb;

$current_user   = wp_get_current_user();
$customer_email = $current_user->user_email;
$customer_data = array( $customer_email );
$statuses      = array_map( 'esc_sql', wc_get_is_paid_statuses() );

$result = $wpdb->get_col( "
    SELECT im.meta_value FROM {$wpdb->posts} AS p
    INNER JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id
    INNER JOIN {$wpdb->prefix}woocommerce_order_items AS i ON p.ID =  i.order_id
    INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS im ON i.order_item_id = im.order_item_id
    WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $statuses ) . "' )
    AND pm.meta_key IN ( '_billing_email', '_customer_user' )
    AND im.meta_key IN ( '_product_id', '_variation_id' )
    AND im.meta_value != 0
    AND pm.meta_value IN ( '" . implode( "','", $customer_data ) . "' )
" );

為了僅顯示產品類型為“簡單”的產品,插入到其中的正確 sql 查詢是什么?

可以僅使用以下代碼將此查詢限制為簡單產品,我們根據product_type Woocommerce 分類法(管理產品類型)為術語 slug simple (simple products)執行子“分類法查詢”:

global $wpdb;

$current_user   = wp_get_current_user();
$customer_email = $current_user->user_email;
$customer_data = array( $customer_email );
$statuses      = array_map( 'esc_sql', wc_get_is_paid_statuses() );

$result = $wpdb->get_col( "
    SELECT im.meta_value 
    FROM {$wpdb->posts} AS p
    INNER JOIN {$wpdb->postmeta} AS pm 
        ON p.ID = pm.post_id
    INNER JOIN {$wpdb->prefix}woocommerce_order_items AS i 
        ON p.ID =  i.order_id
    INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS im 
        ON i.order_item_id = im.order_item_id
    WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $statuses ) . "' )
    AND pm.meta_key IN ( '_billing_email', '_customer_user' ) 
    AND im.meta_key = '_product_id'
    AND im.meta_value IN (
        SELECT tr.object_id 
        FROM {$wpdb->prefix}term_relationships as tr
        INNER JOIN {$wpdb->prefix}term_taxonomy as tt 
            ON tr.term_taxonomy_id = tt.term_taxonomy_id
        INNER JOIN {$wpdb->prefix}terms as t 
            ON tt.term_id = t.term_id
        WHERE tt.taxonomy = 'product_type' 
        AND t.slug = 'simple'
    )
    AND pm.meta_value IN ( '" . implode( "','", $customer_data ) . "' )
    GROUP BY im.meta_value
" );

// The raw output (testing
echo '<pre>'; print_r($result); echo '</pre>';

測試和工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM