قراردادن محصولات ناموجود در انتهای لیست
در ووکامرس یکی معمولا بعد از مرتب سازی براساس جدیدترین، قدیمیترین، بیشترین قیمت، کمترین قیمت ممکن است محصولات ناموجود در بالای لیست قرار بگیرند این موضوع تجربه کاربری کاربران را دچار مشکل میکند.
قراردادن محصولات ناموجود در انتهای لیست
برای حل این مشکل در فایل functions.php قالب فعال سایت وردپرسی خود کد زیر را قرار دهید و آن را ذخیره کنید:
add_filter('posts_clauses', 'custom_move_contact_price_to_end', 9999);
function custom_move_contact_price_to_end($posts_clauses)
{
global $wpdb;
// Apply changes only on WooCommerce loops
if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy()))
{
// Join to postmeta table for price meta key
$posts_clauses['join'] .= " LEFT JOIN $wpdb->postmeta price_meta ON ($wpdb->posts.ID = price_meta.post_id AND price_meta.meta_key = '_price') ";
// Order by CASE condition to move "Contact" price products to the end
$posts_clauses['orderby'] = " CASE WHEN price_meta.meta_value IS NULL OR price_meta.meta_value = '' OR price_meta.meta_value = 'تماس' THEN 1 ELSE 0 END ASC, " . $posts_clauses['orderby'];
}
return $posts_clauses;
}
حالا اگر محصولات موجود در لیست در هنگام مرتب سازی بالاتر از محصولات ناموجود قرار می گیرند.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















میشه ترکیب این کد با مرتب سازی براساس قیمت هم انجام داد؟
بله، این کد با مرتبسازیهای پیشفرض ووکامرس مثل «براساس قیمت»، «جدیدترین» یا «قدیمیترین» تداخلی نداره. فقط ترتیب نمایش محصولات ناموجود رو به انتهای لیست منتقل میکنه. بنابراین همچنان میتونی براساس قیمت هم مرتبسازی انجام بدی.
با این روش فیلترهای ووکامرس هم هنوز درست کار می کنن؟
بله، فیلترهای ووکامرس مثل فیلتر قیمت، دستهبندی یا ویژگیها بهصورت عادی کار میکنن. این تغییر فقط روی ترتیب نمایش محصولات در خروجی نهایی اثر میذاره و به فیلترها یا نتایجشون آسیبی نمیزنه.
با این روش فیلترهای ووکامرس هم هنوز درست کار می کنن؟
بله کاملاً، چون این کد فقط در مرحلهی مرتبسازی نهایی وارد عمل میشه و به فیلترها و کوئریهای اصلی ووکامرس دست نمیزنه. پس همچنان میتونی از همه فیلترها بدون مشکل استفاده کنی.
ترتیب پیشفرض مرتب سازی تغییر می کنه؟
خیر، ترتیب پیشفرض ووکامرس (مثلاً مرتبسازی براساس جدیدترین محصولات) تغییر نمیکنه. فقط محصولات ناموجود در هر حالت مرتبسازی، به انتهای لیست منتقل میشن تا تجربه کاربری بهتری داشته باشی.
این کد روی دسته بندیهای محصولات هم کار می کنه؟
بله دقیقاً، این کد برای تمام بخشهای فروشگاه از جمله صفحه اصلی فروشگاه، دستهبندیها، تگها و سایر صفحات آرشیو محصولات فعال میشه.