I
I
itbrains2019-10-02 20:11:35
WordPress
itbrains, 2019-10-02 20:11:35

Check which option the customer bought?

I have such a function, I would like to determine the id of the purchased option. Prompt as request in function?

// Функция проверки куплен ли товар по id
 
function has_bought_multi( $user_id = 0,  $product_ids = 0, $days = 0 ) {
global $wpdb;
$customer_id = $user_id == 0 || $user_id == '' ? get_current_user_id() : $user_id;
$statuses      = array_map( 'esc_sql', wc_get_is_paid_statuses() );
$date = date('Y-m-d H:i:s', strtotime("-$days day") );
 
if ( is_array( $product_ids ) )
$product_ids = implode(',', $product_ids);
 
if ( $product_ids !=  ( 0 || '' ) )
$query_line = "AND woim.meta_value IN ($product_ids)";
else
$query_line = "AND woim.meta_value != 0";
 
// Count the number of products
$product_count_query = $wpdb->get_col( "SELECT COUNT(woim.meta_value) FROM {$wpdb->prefix}posts AS p
INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
INNER JOIN {$wpdb->prefix}woocommerce_order_items AS woi ON p.ID = woi.order_id
INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS woim ON woi.order_item_id = woim.order_item_id
WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $statuses ) . "' )
AND p.post_date > '$date'
AND pm.meta_key = '_customer_user'
AND pm.meta_value = $customer_id
AND woim.meta_key IN ( '_product_id', '_variation_id' )
$query_line
" );
// Set the count in a string
$count = reset($product_count_query);
// Return a boolean value if count is higher than 0
return $count > 0 ? true : false;
}
 
 
// Вывод в шаблоне, работает
 
if( has_bought_multi( '', 6678, 360 ) ){
          echo 'Товар куплен';
          } else {
          echo 'Товар не куплен';
}

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question