Iv'e сталкивался с этим много раз.Мой подход немного другой.Используется обычный WP_Query()
и убедитесь, что в поле постобъекта отношения ACF сохраняются не выбранные вручную объекты как объект публикации, а как идентификатор сообщения .(это просто вариант для выбора на странице настраиваемого поля).Таким образом, я могу использовать собственные мета-запросы Wordpress
Мой массив args выглядит следующим образом, позволяя сортировать запрос по определенному полю даты, равному или более новому, чем сегодня.
$args = array(
'post_type' => 'class', /* (your CPT slug: class or classes) */
'posts_per_page' => -1,
'meta_key' => 'class-expiry-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'post__in' => array( get_sub_field( 'class' ) ),
'meta_query' => array(
array(
'key' => 'class-expiry-date',
'value' => date('Ymd', strtotime('now')),
'type' => 'date',
'compare' => '>=',
)
)
);
$wp_query = new WP_Query( $args );
if( $wp_query->have_posts() ) {
while( $wp_query->have_posts() ) {
$wp_query->the_post();
// Upcoming classes !!
// echo $post->post_title (example)
}
} else {
// There are no upcoming classes
}
wp_reset_query();
Убедитесь, что вы выводите настраиваемое поле даты истечения срока действия в следующем формате в формате Ymd (также на странице с настраиваемыми полями)