Как отсортировать записи сперва с заполненной датой (ближайшей), потом без даты (пустое value)?

Для сортировки записей в WordPress по дате, вы можете использовать функцию get_posts() вместе с параметром orderby. Чтобы записи отсортировались по возрастанию даты, вы должны задать значение 'date' для параметра orderby. Однако, по умолчанию, записи без даты будут показываться перед записями с заполненной датой.

Чтобы изменить этот порядок и отсортировать записи сначала по заполненной дате, а затем по записям без даты, вы можете использовать следующий код:

$args = array(
    'post_type' => 'post', // тип записи
    'orderby'   => 'meta_value_num date', // сортировка по значению мета-поля и дате
    'meta_key'  => 'your_meta_key', // ключ мета-поля
    'order'     => 'ASC' // порядок сортировки (возрастание)
);

$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // здесь выводите записи
    }
    wp_reset_postdata();
} else {
    // если записей нет
}

В этом примере мы используем параметр orderby для сортировки по значению мета-поля и дате. meta_key - это ключ мета-поля, которое должно быть заполнено с датой. Здесь вы должны заменить 'your_meta_key' на ключ мета-поля, соответствующий вашему случаю. Если вы не используете мета-поле, чтобы хранить дату, вы можете использовать любое другое поле с датой, например 'post_date'.

Затем мы создаем новый экземпляр класса WP_Query с передачей в него параметров, и в цикле выводим записи. После завершения цикла необходимо вызвать wp_reset_postdata(), чтобы сбросить запрос и вернуться к обычному циклу WordPress.

Если необходимо изменить порядок сортировки, замените 'ASC' на 'DESC'.

Обратите внимание, что этот код предполагает, что у вас уже есть записи с заполненными и пустыми датами. Если вы только начинаете использовать WordPress и у вас нет записей, то нужно сначала создать такие записи.