WP_Query сортировка по номеру с первым текстом в названии продукта - PullRequest
0 голосов
/ 10 марта 2020

Мне нравится сортировать WP_Query по названию продукта, а последние цифры названия продукта - это числа. Таким образом, он должен быть отсортирован по последним номерам.

Пример продукции:

Mate's Mates - 219

China Chun Mee - 301

Red Winter Punch - 428

Мой WP_Query, который работает без сортировки:

 $argscat = array(
            'taxonomy' => 'product_cat',



        );


        $all_categories = get_categories($argscat);

        foreach ($all_categories as $cat) {



            if ($cat->name != 'Thee') {
                $params = array('post_type' => 'product', 'limit' => -1, 'posts_per_page' => -1, 'post__not_in' => $numbersProductHidden, 'tax_query' => array(
                    array(
                        'taxonomy' => 'product_cat',
                        'field' => 'id',
                        'terms' => $cat->term_id,
                        'parent' => 1
                    ),
                    'tax_query' => array(
                        array(
                            'taxonomy' => 'product_visibility',
                            'field' => 'name',
                            'terms' => 'exclude-from-catalog',
                            'operator' => 'NOT IN',
                        ),
                    )
                ),

                );

                $loop = new WP_Query($params);

$ l oop должен давать отсортированный результат по номерам в конце названия продукта

1 Ответ

0 голосов
/ 11 марта 2020

Вот как вы можете делать то, что вы хотите сделать с PHP ... Я думаю, вы должны быть в состоянии приспособить это к вашим потребностям. Что вы могли бы сделать, это создать массив с вашими первоначальными результатами и установить ключ массива для этого массива равным числу, которое находится в конце вашего заголовка. Затем используйте ksort и l oop через новый массив в обновленном порядке.

 // Example of results as an array.
 $results = array('China Chun Mee – 301', 'Mango’s Mates – 219' , 'Red Winter Punch – 428');

 // Loop through your initial results and create new array where the number at the end is the array key.             
 foreach ($results as $value){

     $number[substr($value, -3)] = $value;
 }   

 // sort your array on Key               
 ksort($number, SORT_NUMERIC);

 // Loop through new array and output your results in numerical order
 foreach ($number as $result){
     echo $result . '<br>';
 } 

результат сверху:

Mango’s Mates – 219 
China Chun Mee – 301 
Red Winter Punch – 428
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...