
فهرست محتوای مقاله
مقدمه
ووکامرس محبوب ترین افزونه فروشگاه ساز برای وردپرس محسوب میشود. این افزونه به شما کمک میکند تا به سادگی فروشگاه آنلاین خود را راه اندازی کرده و انواع محصولات خود اعم از محصولات فیزیکی، دانلودی و … را به فروش برسانید. علاوه بر این، ووکامرس دارای یک API بسیار قدرتمند و توابع PHP جامع است که به شما کمک میکند از طریق هوک های وردپرس، قابلیت ها و ویژگی های مد نظر خود را پیاده سازی کنید.
گاهی در مسیر توسعه سایت های فروشگاهی بر پایه ووکامرس و وردپرس، نیاز داریم تا چک کنید که آیا یک کاربر خاص، یک محصول خاص را خریداری کرده است یا خیر؟ به عنوان مثال فرض کنید میخواهید وقتی کاربری از صفحه یک محصول بازدید میکند، یک متن به اون نمایش داده و او را خرید مجدد همراه با ارائه یک کد تخفیف دعوت کنید. در این مقاله روشی را به شما یاد میدهیم که از طریق آن بتوانید بررسی خرید محصول توسط کاربر را در ووکامرس از طریق PHP انجام دهید.
جهت آموزش نصب ووکامرس و راه اندازی آن میتوانید این مقاله را بخوانید.
چرا بررسی خرید محصول توسط کاربر مهم است؟
در بسیاری از سایتهای فروشگاهی، نیاز است تا اطمینان حاصل کنید که یک کاربر قبل از دریافت یک سرویس یا محتوا، محصولی را خریداری کرده باشد. برخی از کاربردهای این کار عبارتند از:
- ارائه محتوای ویژه برای خریداران محصول: به کاربرانی که یک محصول خاص را خریداری کردهاند، محتوای ویژه ارائه دهید و یک بخش خاص را فقط به آنها نمایش دهید
- ارائه تخفیف اختصاصی: تخفیف ویژه برای خریدهای بعدی و کاربرانی که قبلا محصولی خاص را خریداری کرده اند
- کنترل دسترسی: اطمینان از اینکه تنها کاربران خریدار به بخشهای خاصی از سایت دسترسی دارند.
این ویژگی در سایت های آموزشی که سیستم خرید دوره های آنها از طریق ووکامرس مدیریت شده است کاربرد فراوان دارد. به این صورت که تنها کاربرانی که محصول خاص (دوره آموزشی) خریداری کرده اند اجازه نمایش محتوای دوره را داشته باشند.
آموزش بررسی خرید محصول توسط کاربر در ووکامرس
برای انجام این کار، میتوان از یک قطعه کد ساده در PHP استفاده کرد. این کد وضعیت خرید محصول توسط کاربر را بررسی میکند. در ادامه، نحوه انجام این کار توضیح داده شده است:
کد PHP برای تشخیص خرید محصول توسط کاربر
برای بررسی خرید محصول توسط کاربر کافی است کد PHP زیر را درون فایل functions.php
قالب خود (و یا کدبیس افزونه خودتان) قرار دهید. وظیفه این تابع این است که با دریافت آیدی یک محصول و یک کاربر، چک کند که آیا کاربر مذکور، محصول تعیین شده را خریداری کرده است یا خیر؟
function has_user_purchased_product($user_id, $product_id) {
if (!$user_id || !$product_id) {
return false; // Invalid input
}
// Get all orders of the user
$customer_orders = wc_get_orders(array(
'customer_id' => $user_id,
'status' => array('wc-completed', 'wc-processing', 'wc-on-hold'), // Include relevant statuses
'limit' => -1, // Retrieve all orders
));
// Check each order for the product
foreach ($customer_orders as $order) {
foreach ($order->get_items() as $item) {
if ((int) $item->get_product_id() === (int) $product_id) {
return true; // Product found in one of the orders
}
}
}
return false; // No matching product found
}
نحوه استفاده از تابع
برای استفاده از این تابع، کافی است user_id
و product_id
را به آن ارسال کنید. به عنوان مثال:
$user_id = get_current_user_id(); // Replace with the desired user ID
$product_id = 123; // Replace with the desired product ID
if (has_user_purchased_product($user_id, $product_id)) {
echo 'The user has purchased the product.';
} else {
echo 'The user has not purchased the product.';
}
توضیح عملکرد کد
- دریافت سفارشهای کاربر: از تابع
wc_get_orders
برای دریافت تمامی سفارشهای مربوط به کاربر استفاده میکنیم. در اینجا وضعیت سفارشها را بهcompleted
،processing
وon-hold
محدود کردهایم. - بررسی وجود محصول در سفارشها: با استفاده از تابع
get_items
، آیتمهای هر سفارش را بررسی کرده و تطابق شناسه محصول باproduct_id
داده شده را چک میکنیم. - برگرداندن نتیجه: اگر محصول موردنظر در سفارشهای کاربر یافت شود، مقدار
true
و در غیر این صورت مقدارfalse
برگردانده میشود.
شما میتوانید از این تابع در هر جای وب سایت خود، مانند بدنه قالب سایت، داخل هوک های وردپرس، داخل تابع سازنده شورت کدها و … استفاده کنید و تنها کافی است آیدی محصول و آیدی کاربر به این تابع ارسال شود. در صورتیکه کاربر مورد نظر، محصول گفته شده را قبلا خریداری کرده باشد، این تابع مقدار true
برمیگرداند و در غیر اینصورت خروجی تابع مقدار false
خواهد بود.
استفاده از تابع به عنوان شورت کد
برای اینکه بتوانید از تابع گفته شده در بالا در همه جای وب سایت و به سادگی استفاده کنید میتوانید آن را بصورت یک شورت کد وردپرس در بیاورید. برای این کار کد بالا را به شکل زیر بنویسید:
function purchased_product_shortcode($atts, $content = null) {
global $post;
$user_id = get_current_user_id();
$product_id = $post->ID; // Get product ID from the current page
// Check if the user has purchased the product
if (has_user_purchased_product($user_id, $product_id)) {
return do_shortcode($content); // Display the shortcode content
}
return ''; // Hide content for users who have not purchased the product
}
add_shortcode('purchased_product', 'purchased_product_shortcode');
برای استفاده از شورت کد بالا کافی است آن را در هر محل مورد نظر از محصول خود قرار دهید. محتوایی که درون شورت کد نوشته میشود، تنها به کاربرانی نمایش داده میشود که محصول مورد نظر را خریداری کرده اند. نمونه استفاده از شورت کد:
[purchased_product]
This content is only visible to users who have purchased this product.
[/purchased_product]
دیدگاهتان را بنویسید