Для использования `WP_Query` для фильтрации по одному полю и сортировки по другому, вы можете передать параметры `meta_key` и `orderby` в аргументы запроса.
Пример использования `WP_Query` для фильтрации по полю `meta_key` (например, 'event_date') и сортировки по полю `orderby` (например, 'post_title'):
```php
$args = array(
'post_type' => 'events',
'meta_key' => 'event_date',
'orderby' => 'title',
'order' => 'ASC'
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// Ваш код для отображения постов
}
} else {
// Если нет постов
}
wp_reset_postdata();
```
Для получения постов типа "events" с учётом нескольких условий, таких как дата мероприятия и закреплённый статус, с использованием REST API WordPress, вы можете создать кастомный маршрут и обработчик, который будет фильтровать посты согласно заданным критериям.
Пример создания кастомного маршрута для REST API:
```php
add_action( 'rest_api_init', function () {
register_rest_route( 'custom/v1', '/events/(?P<date>\d{4}-\d{2}-\d{2})/(?P<status>\d+)/', array(
'methods' => 'GET',
'callback' => 'get_filtered_events',
) );
} );
function get_filtered_events( $data ) {
$date = $data['date'];
$status = $data['status'];
$args = array(
'post_type' => 'events',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'event_date',
'value' => $date,
'compare' => '='
),
array(
'key' => 'event_status',
'value' => $status,
'compare' => '='
)
)
);
$query = new WP_Query( $args );
$posts = $query->posts;
return rest_ensure_response( $posts );
}
```
Обратите внимание, что в примере используются заглушки для даты и статуса фильтрации, вы можете адаптировать код под свои конкретные требования.