按 acf 日期转发器字段对自定义 post 类型进行排序

Sort custom post types by acf date repeater field

我有一个名为 project 的自定义 post 类型。由于每个项目都可以有多个发生日期,因此我创建了一个名为 dates 的转发器字段日期和时间以及一个名为 date 的子字段。

我想在如下页面中显示所有 post(按 acf 子字段 date 排序):

project A: 10th march
project B: 17th march
project A: 21st march
project C: 30th march
project A: 5th april
project B: 12th april
and so on...

我怎样才能做到这一点?

以下是我的做法,希望对遇到同样问题的人有所帮助。我创建了一个包含 post id 和 date repeater 字段的数组并循环遍历它。

$events = new WP_Query(array('post_type' => 'project'));
if($events->have_posts()) :
  $listPostEvents = array(); // creating an empty array 
  while ( $events->have_posts() ) : $events->the_post();

    if (have_rows('repeater_dates')): // name of the repeater field
      while (have_rows('repeater_dates')) : the_row();
        $date = strtotime( get_sub_field('start_date_repeat') ); // keep the date as Unix timestamp format - easier to sort
          $listPostEvents[] = array(
            'date'      => $date,
            'ID'        => $post->ID
          );
      endwhile;
    endif;

  endwhile;

  $dates = array_column($listPostEvents, 'date'); // list all dates
  array_multisort($dates, SORT_ASC, $listPostEvents); // sort these dates chronologically
    foreach ($listPostEvents as $listPostEvent) : // loop through the array sorted by dates
        $postID = $listPostEvent['ID'];

        echo '<article class="event post-' . $postID . '">';
          echo '<a href="' . esc_url( get_permalink($postID) ) . '">';
            the_post_thumbnail('large');
          echo '</a>';
          echo '<time>' . date_i18n( "d.m.Y", $listPostEvent['date'] ) . '</time>'; // echo the dates in day.month.Year translatable format
          echo '<a href="' . get_permalink($postID) . '">' . get_the_title($postID) . '</a>';
        echo '</article>';

    endforeach;
endif;