آموزش قرارگیری محصولات ناموجود در آخر هر دسته بندی در وردپرس
در ادامه دوره ادمینی سایت و آموزش کار با وردپرس به بحث قرارگرفتن محصولات ناموجود بعد از محصولات موجود می رسیم.
برای قرارگیری محصولات ناموجود در انتهای هر دستهبندی در فروشگاه وردپرسی (مانند ووکامرس)، میتوانید از یک تابع سفارشی استفاده کنید که ترتیب نمایش محصولات را تغییر دهد. به این منظور، میتوانید کد زیر را به فایل 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قالب فعال خود اضافه کنید. - پس از اعمال کد، حتماً کش سایت را پاک کنید.
- اگر همچنان مشکلی وجود داشت، به صورت موقت تمام افزونههای دیگر را غیرفعال کنید تا بررسی کنید که آیا تداخلی وجود دارد یا خیر.
اگر همچنان مشکل پابرجاست، لطفاً اطلاعات بیشتری در مورد قالب یا افزونههای نصب شده بدهید تا بتوانم دقیقتر راهنمایی کنم.
محتوای جدول