توسط تابع زیر می تونم کاربرانی رو که از سایت خرید داشتن رو از بقیه کاربران جدا کنیم و یا متن و یا منوی خاصی رو برای اون کاربران نمایش بدیم که برای سایر کاربران که از سایت خریدی نداشتن قابل مشاهده نباشه
function has_bought() { // Get all customer orders $customer_orders = get_posts( array( 'numberposts' => 1, // one order is enough 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WC orders post type 'post_status' => 'wc-completed', // Only orders with "completed" status 'fields' => 'ids', // Return Ids "completed" ) ); // print_r($customer_orders); // return "true" when customer has already at least one order (false if not) return count($customer_orders) > 0 ? true : false; }
این تابع هم قرار هست همین کار رو انجام بده
function has_bought( $value = 0 ) { if ( ! is_user_logged_in() && $value === 0 ) { return false; } global $wpdb; // Based on user ID (registered users) if ( is_numeric( $value) ) { $meta_key = '_customer_user'; $meta_value = $value == 0 ? (int) get_current_user_id() : (int) $value; } // Based on billing email (Guest users) else { $meta_key = '_billing_email'; $meta_value = sanitize_email( $value ); } $paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() ); $count = $wpdb->get_var( $wpdb->prepare(" SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $paid_order_statuses ) . "' ) AND p.post_type LIKE 'shop_order' AND pm.meta_key = '%s' AND pm.meta_value = %s LIMIT 1 ", $meta_key, $meta_value ) ); // Return a boolean value based on orders count return $count > 0; }
چک کردن با داشتن آی دی کاربری
// Define the user ID $user_id = 85; if( has_bought( $user_id ) ) echo '<p>customer have already made a purchase</p>'; else echo '<p>Customer with 0 purchases</p>';
چک کردن با ایمیل
// Define the billing email (string) $email = 'louis.fourteen@gmail.com'; if( has_bought( $email ) ) echo '<p>customer have already made a purchase</p>'; else echo '<p>Customer with 0 purchases</p>'