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