I am new to WooCommerce and wanted to check if a user has purchased a specific product (product id # 514) within the past 60 days. This is a product I let people purchase monthly, so it will reoccur a lot. I wanted to just see if they purchased a recent one (that I consider active)
The way I was thinking of doing it now was:
- Get all orders from a user
- For each order, check if it occurred in the past 60 days and and get all products for this order
- For each product, see if the id is x
While I'm sure this will work, I have a funny feeling there is a really concise get_posts(apply_filters( query that will save me some looping time.
Would anyone be wiling to share a few ideas or a solution?
Thanks!
Here is a conditional function partially based on the built-in woocommerce function
wc_customer_bought_product
source code query:There is an 3 optional argument
$user_id
,$product_ids
and$days
:$user_id
will allow you to specify a defined user ID (when is not used for current logged in user);$product_ids
(string or an array) will allow to specify defined product Ids to check$days
will allow you to specify the number of days to search for (or the period if you prefer)…The code function:
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
This code is tested on Woocommerce 3+ and works.
Similar answer: Check if a customer has purchased a specific products in WooCommerce
USAGE EXAMPLE (Customer is logged in):
Detecting if current user has bought your product id # 514 in past 60 days: