ACF 中继器对多个日期进行排序

问题描述 投票:0回答:1

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

$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

我需要检查的“数据”,2019 年 8 月 1 日已经隐藏了日期,并且要查看日期 2018 年 8 月 26 日,并将其按照正确的顺序放置在应与日期一起的位置。

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

非常感谢

php wordpress advanced-custom-fields acfpro
1个回答
0
投票

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

            $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 );
© www.soinside.com 2019 - 2024. All rights reserved.