آوردن محصولات موجود به ابتدای لیست در ووکامرس
در این نوشته به روش تغییر کوئریهای ووکامرس میپردازیم تا بتوانیم محصولات موجود را به ابتدای حلقهی محصولات بیاوریم.
آوردن محصولات موجود به ابتدای لیست در ووکامرس
برای آوردن محصولات موجود در ابتدای حلقهی محصولات یا لوپ loop محصولات قطعه کد زیر را در فایل functions.php قالب فعلی سایت وردپرس خود قرار دهید:
add_filter( 'posts_clauses', 'order_products_by_stock_status', 9999, 2 );
function order_products_by_stock_status( $posts_clauses, $query ) {
global $wpdb;
if ( ! is_admin() && $query->is_main_query() && is_woocommerce() ) {
$posts_clauses['join'] .= " LEFT JOIN {$wpdb->prefix}wc_product_meta_lookup wcml ON {$wpdb->posts}.ID = wcml.product_id";
$posts_clauses['orderby'] = "wcml.stock_status ASC, " . $posts_clauses['orderby'];
}
return $posts_clauses;
}
اگر نیاز به آموزشهای بیشتری در زمینه ووکامرس دارید در بخش نظرات همین نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]



















اگر قالب از AJAX برای بارگذاری محصولات استفاده کند، آیا همچنان درست عمل میکنه؟
اگر قالب محصولات را با AJAX بارگذاری میکند، ممکن است این کد به صورت پیشفرض روی بارگذاری AJAX اعمال نشود و نیاز به اعمال تغییرات اضافی یا hook مخصوص AJAX داشته باشید.
این کد با نسخههای جدید ووکامرس و وردپرس سازگاره؟
بله، کد با نسخههای اخیر سازگار است، ولی همیشه توصیه میشود قبل از اعمال در سایت زنده، روی محیط تست بررسی شود.
این کد با افزونههای کشینگ یا صفحهسازها تداخل نداره؟
در بیشتر موارد مشکلی ندارد، اما اگر افزونه کشینگ شدید یا صفحهساز خاصی تغییر query اصلی را نادیده بگیرد، ممکن است نیاز به استثنا یا تنظیمات اضافی باشد.
این کد با افزونههای کشینگ یا صفحهسازها تداخل نداره؟
در بیشتر موارد مشکلی ندارد، اما اگر افزونه کشینگ شدید یا صفحهساز خاصی تغییر query اصلی را نادیده بگیرد، ممکن است نیاز به استثنا یا تنظیمات اضافی باشد.
اگر از کوئریهای سفارشی یا WP_Query استفاده کنیم، آیا همچنان کار میکنه؟
کد روی main query ووکامرس کار میکند؛ اگر از کوئریهای سفارشی WP_Query استفاده کنید، باید شرطها و hook مناسب را برای آنها هم اضافه کنید.