WordPress+ACF сортировка и вывод записей с фильтром по произвольным полям

Задача: вывести записи с сортировкой по дате указанной в произвольном поле плагина ACF.


Представим, у вас много записей, каждая запись имеет поле datepicker и вам нужно вывести на главной странице последние записи, но не по дате публикации записи вордпресса, а по дате, указанной в datepicker плагина ACF.

Используем следующий код:

<? $args = array( 'meta_key' => 'datepicker', // ключ поля ACF
'orderby' => 'meta_value_num',
'showposts' => '5', // кол-во выводимых записей
'cat' => '14', // ID категории, откуда вывести записи
'order' => 'ASC' // Порядок сортировки записей
);
$the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { ?>
// start
<!--?php while ( $the_query->have_posts() ) { $the_query->the_post(); ?-->
// вывод одной записи
<!--?php } ?-->
// end
<!--?php } else { ?-->
<!--?php } ?-->
<!--?php wp_reset_postdata(); ?-->

Сортировка и вывод записей в категории по значению произвольного поля ACF. Для того, чтобы отсортировать все записи указанной категории не по дате публикации записи вордпресс, а по значению произвольного поля ACF у записи, добавил нижеприведенный код в файл functions.php вашей темы:

// Сортировка и вывод записей категории по значению произвольного поля ACF
add_action('pre_get_posts', 'my_pre_get_posts', 10, 1);
function my_pre_get_posts($query)
{
if ($query->query['category_name'] == 'blog') { // вместо 'blog' указываем ID нужной категории
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DSC'); // порядок сортировки
}
if ($query->query['category_name'] == 'events') { // вместо 'events' указываем ID нужной категории
$query->set('meta_key', 'datepicker'); // сортировка по произвольному полю
$query->set('orderby', 'meta_value_num');
$query->set('order', 'ASC'); // порядок сортировки
}
$query->set('meta_query', $meta_query);
}

Другие публикации