لتحريك منتجات ووكومرس التي تكون جميع متغيراتها غير متوفرة إلى نهاية قائمة المتجر والصفحة الرئيسية، يجب الاتصال بالـ hooks الافتراضية في ووردبريس وووكومرس وضبط أولوية ترتيب المنتجات بناءً على حالة المخزون. تابعوا مع راديب حتى نهاية هذا الدرس.
شرح الخطوات:
- تحديد المنتجات التي تحتوي على جميع المتغيرات غير المتوفرة.
- تعديل hook الخاص بترتيب عرض المنتجات في ووكومرس.
- نقل المنتجات غير المتوفرة إلى نهاية القائمة.
الكود الكامل لإضافته إلى ملف functions.php
:
اشترِ استضافة ووردبريس فائقة السرعة مع cPanel و DirectAdmin بأفضل سعر من راديب، انقر هنا
التحسين:
- استخدام استعلام مباشر لقاعدة البيانات: بدلًا من استخدام استعلامات meta معقدة.
- مرشح ذكي في
posts_clauses
: الطريقة الأمثل لتطبيق التعديلات على ترتيب الاستعلام دون إبطاء المتجر.
الكود المقترح:
// نقل المنتجات غير المتوفرة إلى نهاية قائمة المتجر
add_filter('posts_clauses', 'move_out_of_stock_products_to_end', 10, 2);
function move_out_of_stock_products_to_end($clauses, $query) {
if (!is_admin() && is_woocommerce() && $query->is_main_query()) {
global $wpdb;
// شرط التحقق من المنتجات غير المتوفرة
$stock_status_table = "{$wpdb->prefix}postmeta";
$clauses['join'] .= " LEFT JOIN $stock_status_table AS stock_status_meta ON ({$wpdb->posts}.ID = stock_status_meta.post_id AND stock_status_meta.meta_key = '_stock_status')";
// نقل المنتجات المتوفرة إلى بداية القائمة
$clauses['orderby'] = "CASE WHEN stock_status_meta.meta_value = 'outofstock' THEN 1 ELSE 0 END ASC, " . $clauses['orderby'];
}
return $clauses;
}
التوضيحات:
- يستخدم هذا الكود hook
posts_clauses
لتعديل استعلام SQL الرئيسي في ووكومرس مباشرة. - يتم نقل المنتجات غير المتوفرة باستخدام ميتا داتا
_stock_status
إلى نهاية القائمة. - شرط SQL
CASE WHEN
يجعل المنتجات غير المتوفرة تظهر في النهاية.
اشترِ خادم VPS اقتصادي من راديب، انقر هنا
المزايا:
- مُحسَّن وسريع: بسبب التعديل المباشر على استعلام SQL.
- عدم استخدام استعلامات meta معقدة: تحسين الأداء للمتاجر الكبيرة.
أ. هل تحتاج إلى نقل المنتجات بناءً على أولويات إضافية مثل التاريخ أو التصنيف؟
ب. هل تريد شرحًا أكثر تفصيلاً عن كيفية تحسين هذا الكود؟
تواصل مع خبراء ومطوري راديب عبر نظام التذاكر الدعم.