انتقال محصولات ناموجود به انتهای لیست محصولات در ووکامرس

در دسته بندی ها و برچسب های ووکامرس محصولات بدون ترتیب خاصی به نمایش گذاشته می شوند. به این شکل محصولات ناموجود شما بین محصولات یا در ابتدای لیست محصولات قرار میگیرند و کاربر سایت متوجه محصولات موجود شما نخواهد شد. این موضوع به شدت میتواند تاثیر منفی بر فروش سایت شما داشته باشد.

راهکار حل این مشکل انتقال محصولات ناموجود در ووکامرس به انتهای لیست و بعد از تمام محصولات موجود سایت است. برای این موضوع نیاز است تا کوئری های ایجاد شده در چیدمان محصولات را اصلاح کنیم و ترتیب محصولات را بر اساس موجود بودن یا عدم موجود بودن محصول بچینیم.

برای رفع این مشکل میتوانید کد زیر را انتهای فایل فانکشن قالب ( functions.php ) خود قرار دهید:

/*
 * Move Out of Stock Product Woocommerce To End
 * Mahdi Jafarzadeh
 * https://www.wpwm.ir/
 * */
add_filter('posts_clauses', 'order_by_stock_status', 9999);
function order_by_stock_status($posts_clauses)
{
    global $wpdb;
    // only change query on WooCommerce loops
    if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy()))
    {
        $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
        $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
        $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
    }
    return $posts_clauses;
}
نکات مهم : چند کد مختلف برای اصلاح این مورد در اینترنت یافت میشود اما این کد کاملترین و سالمترین کد است و میتوند در تمام سایت ها با قالب های استاندارد ووکامرس به درستی عمل کند.

متاسفانه در برخی سایت ها این قطعه کد به صورت افزونه یا آموزش در آمده و با قیمت بسیار بالا به فروش میرسد ! هیچ تفاوتی بین عملکرد این قطعه کد که رایگان قرار دادیم و آن افزونه یا آموزش ها نیست. حتی ممکن است این قطعه کد از آنها نیز بهتر عمل کند.

اگر سوالی درباره عملکرد این کد دارید لطفا در قسمت نظرات بپرسید تا پاسخگوی شما باشیم.

بدون دیدگاه

کد های مشابه با آنچه دیدید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed