Как заказывать сообщения WordPress по пользовательской дате поля?

Я создаю секцию боковой панели событий, в которой будут отображаться только следующие 3 события. У меня есть пользовательский тип сообщения и настраиваемые поля, все работают, но я могу понять, как упорядочить сообщения по дате начала событий, что является настраиваемым значением поля. Есть ли функция php, которая может сравнивать даты и упорядочивать их в определенном порядке. Я думаю, что он также должен был сохранить post-id с недавно установленными датами, чтобы при чтении значений я мог отображать соответствующую запись с этой датой.

Кто-нибудь имеет определенное направление, чтобы меня направить?

Я думаю, что это то, что мне нужно сделать:

  1. Прочитайте сообщения и возьмите даты
  2. Сортировка дат с последующим идентификатором, связанным с этими датами
  3. Прочитайте отсортированные даты и повторите отображение первых 3 сообщений по идентификатору

Я теряюсь на том, как это кодировать, хотя … Это то, что у меня есть до сих пор. Этот код просто отображает их по датам публикации в wordpress.

<?php query_posts('post_type=events'); if (have_posts()) : while (have_posts()) : the_post(); ?> <?php $dateStart = get_post_meta($post->ID, 'date-start', true);?> <div class="date"><?php echo $dateStart; ?></div> <?php endwhile; endif; wp_reset_query(); ?> 

Я считаю, что смог ответить на мой собственный вопрос. WordPress имеет встроенную функцию для сравнения значений пользовательских полей между сообщениями. Чтобы сравнить даты, которые были моим пользовательским значением поля, они должны быть в формате «yyyymmdd», чтобы их можно было легко сравнить.

Я был очень удивлен, что мне не нужно было делать несколько циклов и хранить пост-иды или что-то еще. В любом случае, я надеюсь, что это поможет кому-то другому. :]

  <?php $args = array( 'post_type' => 'events', 'posts_per_page' => 3, //limited myself to 3 posts 'meta_key' => 'date-start', //name of custom field 'orderby' => 'meta_value_num', 'order' => 'ASC' ); query_posts($args); if (have_posts()) : while (have_posts()) : the_post(); ?> //Insert code here... //Test to see if it is sorting the posts (below) <?php $dateStart = get_post_meta($post->ID, 'date-start', true); echo $dateStart;?> <?php endwhile; endif; wp_reset_query(); ?>