69
If you’re developing custom landing pages or sections dedicated to logged in customers, knowing the quantity purchased of a certain product ID might come useful.
We already saw how to detect whether a logged in customer has purchased a given product, as well as a snippet to return all products purchased by a specific user – but this time I want to “count” how many times a current user has purchased a product ID, and return this on the screen via a shortcode.
From this snippet you can learn lots of things, for example how to create custom shortcodes, how to get customer orders, and how to set up a foreach loop in PHP. Either way, enjoy!
PHP Snippet: Count How Many Times a Product ID Was Purchased by Current User (WooCommerce Shortcode)
/**
* @snippet Count Product ID Purchases - WooCommerce Shortcode
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 3.6.2
* @donate $9 https://tutoraspire.com
*/
// SHORTCODE SYNTAX: [product_purchases id="123"]
add_shortcode( 'product_purchases', 'tutoraspire_user_logged_in_product_bought' );
function tutoraspire_user_logged_in_product_bought( $atts ) {
// GET PRODUCT ID FROM SHORTCODE
$atts = shortcode_atts( array(
'id' => '0'
), $atts );
// GET CURRENT USER ORDERS
$current_user = wp_get_current_user();
$customer_orders = wc_get_orders(
array(
'limit' => -1,
'status' => array( 'completed', 'processing'),
'customer' => get_current_user_id(),
)
);
// LOOP THROUGH ORDERS AND SUM QUANTITIES PURCHASED
$count = 0;
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->get_id() );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
if ( $product_id == $atts['id'] ) {
$count = $count + absint( $item['qty'] );
}
}
}
// RETURN HTML
return 'You purchased: ' . $count . ' items';
}