روش اول :شورت کد مرتبسازی محصولات
این روش برای کسانی مناسب است که با وردپرس و کدنویسی آشنایی دارند، از جمله مدیران سایتهای کوچک و متوسط یا توسعه دهندگانی که میخواهند فروشگاه را سفارشیسازی کنند.
برای این کار کافی است کد زیر را در انتهای فایل functions.php قالب خود قرار دهید. پیشنهاد میدهم برای جلوگیری از بروز خطا، ابتدا از فایل یک نسخه پشتیبان بگیرید.
همچنین اگر از Child Theme استفاده میکنید، بهتر است کد را در فایل functions.php قالب فرزند قرار دهید تا تغییرات شما با بروزرسانی قالب اصلی حذف نشود.
add_action('woocommerce_product_query', 'move_out_of_stock_to_end_globally');
function move_out_of_stock_to_end_globally($query) {
if (!is_admin() && $query->is_main_query() && (is_shop() || is_product_category() || is_product_tag() || is_search() || is_home())) {
$meta_query = $query->get('meta_query');
// حفظ متا کوئری قبلی
if (!$meta_query) {
$meta_query = [];
}
// مرتبسازی محصولات موجود و ناموجود
$query->set('orderby', array(
'meta_key' => '_stock_status', // مرتبسازی بر اساس موجود بودن
'meta_value' => 'ASC', // اول محصولات موجود، بعد ناموجود
'date' => 'DESC' // و سپس مرتبسازی بر اساس تاریخ
));
// اطمینان از اینکه محصولات موجود و ناموجود هر دو نمایش داده میشوند
$meta_query[] = array(
'relation' => 'OR',
array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => '='
),
array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '='
)
);
$query->set('meta_query', $meta_query);
}
}
این کد در تمامی بخشهای فروشگاه (صفحه فروشگاه، دستهبندی محصولات، برچسبها، جستجو و صفحه اصلی) اعمال میشود.
- ابتدا محصولاتی که موجود هستند با مقدار _stock_status برابر با instock نمایش داده میشوند.
- سپس محصولاتی که موجود نیستند با مقدار outofstock به انتهای لیست منتقل میشوند.
همچنین ترتیب مرتبسازی ثانویه بر اساس تاریخ تنظیم شده است تا جدیدترین محصولات بالاتر باشند.

اگر به فایل منیجر هاست و یا FTP دسترسی دارید، فایل function.php به مسیر زیر رفته و آن را ویرایش کنید:
wp-content/themes/your-active-theme/functions.php
در غیر این صورت میتوانید در دشبرد وردپرس در منو نمایش (Appearance) گزینه ویرایش تم را انتخاب کرده و در آنجا فایل Function.php را ویرایش نمایید.
روش دوم: استفاده از افزونه
برای عدم نمایش محصولات ناموجود در لیست محصولات ووکامرس، دو افزونه پیشنهاد میدهیم که در ادامه آنها را بررسی خواهیم کرد:
۱. افزونه Extra Product Sorting Options

این افرونه که در مخزن وردپرس قابل دانلود است، امکان مرتبسازی سفارشی محصولات را در صفحات فروشگاه و دستهبندیها فراهم میکند. شما میتوانید محصولات ناموجود را به انتهای لیست منتقل کنید یا اولویت نمایش را برای هر دسته مشخص کنید.
از دیگر ویژگی های افزونه Exta Product Sorting Options میتوان به موارد زیر اشاره کرد:
- امکان مرتبسازی بر اساس موجودی، قیمت، فروش و …
- رابط کاربری ساده برای تنظیمات.
- بدون نیاز به کدنویسی.
۲. افزونه WooCommerce Product Filter by WooBeWoo

این افرونه که در مخزن وردپرس قابل دانلود است، امکان فیلتر و مرتبسازی محصولات را یکجا ارائه میدهد و میتوانید به کاربران اجازه دهید محصولات را بر اساس موجودی و دیگر فیلترها مرتب کنند.
از دیگر ویژگی های افزونه Product Filter by WooBeWoo میتوان به موارد زیر اشاره کرد:
- تنظیمات پیشرفته برای مرتبسازی.
- امکان نمایش یا مخفی کردن محصولات ناموجود.
- مناسب برای فروشگاههای بزرگ.
جمعبندی
استفاده از کد به جای نصب افزونه برای مدیریت نمایش محصولات ناموجود در ووکامرس، بهینه تر است زیرا برخی از افزونهها ویژگی های اضافی و غیرضروری دارند که منابع سرور را مصرف کرده و سرعت سایت را کاهش میدهند، در حالی که یک قطعه کد ساده، مستقیماً هدف موردنظر را پیادهسازی میکند و کنترل بیشتری به شما میدهد.
البته همیشه پیش از ویرایش، تهیه نسخه پشتیبان ضروری است.
با این کد، کاربران فروشگاه شما ابتدا محصولات موجود را مشاهده خواهند کرد و تجربه بهتری از مرور فروشگاه خواهند داشت. اگر سوالی در مورد پیادهسازی داشتید، در بخش نظرات بپرسید!
ممنونم
فقط من نتونستم توی دشبرد وردپرس گزینه ویرایش تم روپیدا کنم
در داشبورد مدیریت وارد شوید
سپس در قسمت در قسمت “نمایش”
زیر بخش “ویرایشگر پرونده پوسته”