In woocommerce I use wc_customer_bought_product() function to display a custom text message in single product pages when customer has already bought the current product. but I would like to check that the product(s) bought are on orders with "completed" status.
The message is not supposed to be shown unless the following criteria is met:
1) user is logged in 2) user has purchased the product 3) At least one placed order for the current product is set to complete (what I cannot figure out how to get done).
Here is my code:
add_action( 'woocommerce_before_single_product_summary', 'woo_review_discount_message');
function woo_review_discount_message() {
if ( is_user_logged_in() ) {
global $product;
$current_user = wp_get_current_user();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product->get_id() && $order->status->complete ) )
echo '<div class="user-bought"><span style="color:#CA364D;font-weight:bold;font-size:18px;"><i class="wishlist-icon icon-heart-o"></i></span> Hi ' . $current_user->first_name . '! Please write a review below.</a></div>';
}
}
I tried adding && $order->status->complete
but that did not work.
Any help is highly appreciated.
If you want to target only Orders with a complete status, you can use the following custom conditional function based on
wc_customer_bought_product()
source code:Code goes in function.php file of the active child theme (or active theme). Tested and works.
If customer is not logged in nothing will be displayed.