Как сделать корректную сортировку результатов AJAX-поиска?

Всем привет.

Делали на сайте AJAX-поиск по товарам. Столкнулись с такой проблемой, что вводя короткое слово (например, ель), которое встречается в названиях других товаров, то сначала выводятся другие товары, а уже потом только "Ели". Поиск делали по этому уроку

Для наглядности ситуации.
Есть ли возможность сначала выводить товары с полным совпадением в начале товара, а уже потом все остальные?
60391aa867146541332006.png

Как происходит выборка у нас сейчас:

$arg = array(
		'post_type' => array('product'),
		'orderby'=> array('type'=>'DESC', 'title'=>'ASC'),
		'post_status' => 'publish',
		'product_cat' => $category,
		's' => convert_english_letters($_POST['s']),
		'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
совет, который уже дан - ничего не стоит
голубые не только ели, но и пили (с)

самый просто способ - написать автору модуля или нанять фрилансера
Ответ написан
В общем то решений как всегда несколько.
Вам нужно делать 2 запроса в БД на сервере. Один - исключитьельно для фразы начинающейся с "Ель", другой для поиска фразы в любом месте.

Для этого ознакомьтесь с работой и агументами класса WP_Query. У него есть хук posts_clauses_request в котором можно подправить соответствующую часть запроса.

Другое решение - стироить самостоятельные SQL запросы в БД. Тогда у Вас в руках будет полный контроль, но надо будет решать вопросы с кэшированием (-это по желанию)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы