Для это го нужно завести мета поле (queue) для товаров . К примеру в Advanced Custom Fields
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /* * *********** Добавляем сортировку по пользовательским свойствам ************* */ /** * Определяем критерии для сортировки с опциями, определяемыми способом ниже */ add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); function custom_woocommerce_get_catalog_ordering_args($args) { global $wp_query; $orderby_value = isset($_GET['orderby']) ? wc_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby')); // Get order + orderby args from string $orderby_value = explode('-', $orderby_value); $orderby = esc_attr($orderby_value[0]); $order = ! empty( $orderby_value[1] ) ? $orderby_value[1] : $order; $orderby = strtolower( $orderby ); $order = strtoupper( $order ); // log_info($orderby, "orderby"); // log_info($order, "order"); // Изменили $_SESSION на $_GET if (isset($orderby)) { switch ($orderby) : case 'pa_pub_featured' : $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC'; $args['meta_key'] = 'queue'; $args['orderby'] = 'meta_value_num ID'; break; endswitch; } return $args; } /** * Добавляем способ сортировки в выпадающий список. Логика/критерии в методе выше */ add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); add_filter('woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby'); function custom_woocommerce_catalog_orderby($sortby) { $sortby['pa_pub_featured-ASC'] = 'Сортировать по умолчанию '; return $sortby; } |