رفتن به مطلب
گروه تلگرام وردپرس

پست های پیشنهاد شده

بعضی مواقع ممکنه کالاهای ناموجود نا مرتب در صفحه محصولات ظاهر شوند و شکل لیست محصولات را بهم بزنه ، با کد زیر نمایش محصولات در صفحه آرشیو و جستجو مرتب می شود و ابتده محصولات قیمت دار و سپس محصولات ناموجود لیست می شوند ( تمامی محصولات ناموجود به انتهای لیست محصولات منتقل می شوند. )

جایگاه کد در فایل functions.php پوسته می باشد .

add_action( 'pre_get_posts', 'move_out_of_stock_products_to_end' );
function move_out_of_stock_products_to_end( $q ) {
// checks whether it is product query or skip next steps
if ( (!isset($q->query_vars['wc_query']) && !isset($q->query_vars['post_type']))
    || ($q->query_vars['wc_query'] != 'product_query' && $q->query_vars['post_type'] != 'product')
    || is_admin() ) return;
// this code just adds postmeta table into search query
$q->set( 'meta_query', array(array(
'key' => '_stock_status',
'value' => '',
'compare' => 'NOT IN'
)));
// filter to handle final post request
add_filter( 'posts_request', 'add_stock_status_in_request' );
// filter to handle additional post fields in select statement
add_filter('posts_fields', 'add_stock_status_in_post_fields', 10, 2);
remove_action( 'pre_get_posts', 'move_out_of_stock_products_to_end' );
}
function add_stock_status_in_post_fields( $fields, $query ) {
$fields .= ", IF(mt1.meta_value = 'instock', 10, 5) as stock_status";
remove_filter('posts_fields', 'add_stock_status_in_post_fields');
return $fields;
}
function add_stock_status_in_request( $input ) {
if (preg_match("@\((.*?)\.meta_key = '_stock_status'@i", $input, $table_name)) {
$input = str_ireplace("mt1.", $table_name[1] . '.', $input);
}
$input = str_ireplace("ORDER BY", "ORDER BY stock_status DESC,", $input);
return $input;
}

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×