![](/img/trans.png)
[英]Disable WooCommerce products for some time if customer has purchased specific product
[英]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.