چطور می توان محصولات ناموجود خود را در انتها قرار داد؟
راه های مختلفی برای این کار وجود دارد اما بهترین روش در این مقاله ارائه شده است تا بتوانید دست ترین نتیجه را بگیرید.
نویسنده: پوریا صادق لو
شنبه, 21 مهر ۱۴۰2 ساعت 13:۰۰
زمان مطالعه
0
دقیقه
در ادامه دوره ادمینی سایت و آموزش کار با وردپرس به بحث قرارگرفتن محصولات ناموجود بعد از محصولات موجود می رسیم.
برای قرارگیری محصولات ناموجود در انتهای هر دستهبندی در فروشگاه وردپرسی (مانند ووکامرس)، میتوانید از یک تابع سفارشی استفاده کنید که ترتیب نمایش محصولات را تغییر دهد. به این منظور، میتوانید کد زیر را به فایل functions.php
در قالب فعال خود اضافه کنید:
add_action('woocommerce_product_query', 'move_out_of_stock_products_to_end');
function move_out_of_stock_products_to_end($q) {
// بررسی اینکه آیا این کوئری آرشیو محصولات است
if (!is_shop() && !is_product_category()) {
return;
}
// اضافه کردن متا کوئری برای مرتبسازی بر اساس موجود بودن یا نبودن محصولات
$meta_query = $q->get('meta_query');
// ابتدا بررسی کنید که آیا متا کوئری موجود است یا خیر
if (empty($meta_query)) {
$meta_query = [];
}
// محصولات ناموجود را به انتهای لیست ارسال کنید
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => '='
);
$q->set('meta_query', $meta_query);
// تنظیم ترتیب بر اساس موجود بودن محصولات
$q->set('orderby', array('meta_value' => 'ASC'));
}
);
توضیحات:
- هوک
woocommerce_product_query
: این هوک به ما امکان میدهد که به صورت مستقیم روی کوئری محصولات ووکامرس تأثیر بگذاریم. - افزودن
meta_query
: یک شرط متا کوئری اضافه میشود که ابتدا محصولات موجود را برگرداند و سپس محصولات ناموجود به انتها فرستاده شوند. - مرتبسازی محصولات: با استفاده از پارامتر
orderby
، ابتدا محصولات موجود به نمایش در میآیند و سپس محصولات ناموجود.
مراحل نهایی:
- این کد را در فایل
functions.php
قالب فعال خود اضافه کنید. - پس از اعمال کد، حتماً کش سایت را پاک کنید.
- اگر همچنان مشکلی وجود داشت، به صورت موقت تمام افزونههای دیگر را غیرفعال کنید تا بررسی کنید که آیا تداخلی وجود دارد یا خیر.
اگر همچنان مشکل پابرجاست، لطفاً اطلاعات بیشتری در مورد قالب یا افزونههای نصب شده بدهید تا بتوانم دقیقتر راهنمایی کنم.