首页 > 解决方案 > ACF 中继器对多个日期进行排序

问题描述

我有一个小问题,我需要解决以下问题:

$today = current_time('Ymd');

$args = array(
    'post_type'      => 'event',
    'posts_per_page' => 3,
    'meta_query'     => array(
        'relation' => 'OR',
        'datumOd'  => array(
            'key' => 'datum_od',
            'value' => $today,
            'compare' => '>=',
        ),
        'datumDo'  => array(
            'key' => 'datum_do',
            'value' => $today,
            'compare' => '>=',
        ),
        'datumy'   => array(
            'key' => 'datumy'
        )
    ),
    'orderby'        => array(
        'datumOd' => 'ASC',
        'datumDo' => 'ASC',
        'datumy'  => 'ASC'
    ),
);

$events = new WP_Query( $args );

"datumy" 是带有日期选择器的 acf 转发器。我需要考虑一些事情,我可以检查我的转发器中的日期是否已经发生并且仍在发生,以及将它们添加到循环中会发生什么。

例子:

current day: 10.8.2018

"datum_od" = 13.08.2018 - post with one date
"datum_od" = 20.08.2018 - post with one date
"datum_od" = 15.09.2018 - post with one date
"datumy" = array (1.8.2018, 26.8.2018, 2.9.2018) - post with multiple dates

和我需要检查的“基准”,1.8.2019 已经隐藏了日期,并查看日期 26.8.2018 加上正确的顺序放置它应该与日期。

这样的事情可能吗?有人知道如何帮助我吗?或者也许指引我走向正确的道路?

非常感谢

标签: wordpressadvanced-custom-fieldsacfpro

解决方案


感谢您的关注,我解决了这个问题,如果有人遇到同样的问题,这是我的解决方案:

            $second = array();

            for ($i = 1; $i <= 10; $i++) {
                $datumy = ( 'Datumy' . $i );
                $datumDB = ('datumy_' . $i . '_datum');
                $second    += array(
                    $datumy => array(
                        'key'     => $datumDB,
                        'value'   => $today,
                        'compare' => '>=',
                    ),
                );
            }

            $args['meta_query'] = array_merge( $args['meta_query'], $second );

推荐阅读