Сортировка на wordpress по нескольким параметрам
помогите исправить ошибки, чтобы реализовать такую сортировку:
- по таксономии(district)
- произвольное поле (ASC)
- другое произвольное поле(ASC)
- произвольное поле 3го пункта, но DESC
с сортировкой по произвольным полям проблем нет, за исключением как передать параметр (ASC или DESC) и второй вопрос, как в этот код добавить сортировку по таксономии(сейчас представленный вариант не работает)
форма фильтров
<div class="area-input__hiden sorting-wrapper">
<label class="sort-name" for="sort-dist">
<input class="sort-radio" id="sort-dist" name="sorting" value="category" type="radio">
<span class="sort-text">По микрорайонам</span><!--ASC-->
</label>
<label class="sort-name" for="sort-area">
<input class="sort-radio" id="sort-area" name="sorting" value="area" type="radio">
<span class="sort-text">По площади</span><!--ASC-->
</label>
<label class="sort-name" for="sort-cost-u">
<input class="sort-radio" id="sort-cost-u" name="sorting" value="price" type="radio">
<span class="sort-text">По возрастанию цены</span><!--ASC-->
</label>
<label class="sort-name" for="sort-cost-d">
<input class="sort-radio" id="sort-cost-d" name="sorting" value="price-2" type="radio">
<span class="sort-text">По убыванию цены</span><!--DESC-->
</label>
</div>
код сортировки
$args = array(
'meta_query' => array(
'category' => array(
'taxonomy' => 'district',
'compare' => 'EXISTS',
'order' => 'ASC'// таким способом понятно не работает
),
'area' => array(
'key' => 'houses-area',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
'order' => 'ASC'// таким способом понятно не работает
),
'price' => array(
'key' => 'cost-per-metr',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
'order' => 'ASC'// таким способом понятно не работает
),
'price-2' => array(
'key' => 'cost-per-metr',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
'order' => 'DESC'// таким способом понятно не работает
)
),
'orderby' => $_POST['sorting']
);
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
код сортировки не верен, вы не можете искать по таксономии в параметре meta_query, для этого есть параметр tax_query. так же на сколько я помню wp не дает возможности сортировать записи по таксономиям. вот так вы можете выбрать все записи у которых есть таксономия district и отсортировать их по значения мета полей
$args = [
'tax_query' => [
[
'taxonomy' => 'district',
'operator' => 'EXISTS',
]
],
'meta_query' => [
'area' => [
'key' => 'houses-area',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
],
'price' => [
'key' => 'cost-per-metr',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
],
'price-2' => [
'key' => 'cost-per-metr',
'compare' => 'EXISTS',
'type' => 'NUMERIC',
],
],
];
if ( ! empty( $_POST['sorting'] ) ) {
$args['orderby'] = [
$_POST['sorting'] => $_POST['sorting'] == 'price-2' ? 'DESC' : 'ASC',
];
}