dana40creative 26.01.2023 22:41

Как изменить порядок вывода записей на странице поиска WordPress?

Здравствуйте! У меня возник вопрос по изменению порядка вывода записей на странице поиска в WordPress. У меня есть поисковая страница, на которой я хочу, чтобы сначала выводились записи с определенной категорией, а затем остальные записи. Но по умолчанию WordPress выводит записи только по дате и не позволяет изменить порядок на странице поиска. Приведу пример кода, с которым я нуждаюсь в помощи:

function custom_search_query($query) {
   if (!$query->is_admin && $query->is_search) {
      $query->set('orderby', 'term_taxonomy_id');
      $query->set('order', 'ASC');
   }
   return $query;
}
add_filter('pre_get_posts','custom_search_query');
Я пробовала использовать функцию pre_get_posts и задавать свои параметры для orderby и order, но это не дало желаемого результата. Буду очень благодарна, если кто-то с опытом работы с WordPress сможет помочь мне разобраться с этой проблемой и поделиться рабочим кодом или подсказкой, как правильно изменить порядок вывода записей на странице поиска. Заранее большое спасибо!

Ответы:

Grishin92 26.01.2023 22:47
- попробуйте использовать параметр "meta_query" вместо "orderby" и "order". Это позволит вам отсортировать записи по определенному значению метаполя.
SGrig45 26.01.2023 23:10
Для изменения порядка вывода записей на странице поиска в WordPress, вы можете использовать функцию pre_get_posts и задать свои параметры для orderby и order. Однако, в вашем примере кода есть некоторая ошибка. Вместо 'term_taxonomy_id', который обозначает идентификатор таксономии, вы должны использовать 'category' для сортировки по категории. Также, чтобы указать определенную категорию, вам нужно добавить параметр 'category_name' со значением названия категории. Вот исправленный код, который поможет вам достичь желаемого результата:

function custom_search_query($query) {
   if (!$query->is_admin && $query->is_search) {
      $query->set('orderby', 'category');
      $query->set('order', 'ASC');
      $query->set('category_name', 'название вашей категории');
   }
   return $query;
}
add_filter('pre_get_posts','custom_search_query');
Пожалуйста, убедитесь, что вы заменили 'название вашей категории' на актуальное название категории, в которой у вас должны выводиться записи вначале. Если у вас все еще возникают проблемы или у вас есть дополнительные вопросы, не стесняйтесь задавать. Буду рада помочь!

Добавить ответ