如何将外部值与while循环值进行比较?

How to compare outside value with while loop values?

提问人:Santosh Khatri 提问时间:5/23/2022 最后编辑:Santosh Khatri 更新时间:5/23/2022 访问量:55

问:

我正在尝试编写一个程序,该程序根据日期比较为我提供输出。我正在使用 ACF 中继器,我在其中放置了一些事件开始日期和事件结束日期。

我有四个不同的事件开始日期,所以我想根据循环中的日期显示结果。这意味着,如果一个包的日期为 2022 年 5 月 23 日,而第二个包的日期为 2022 年 4 月 10 日,那么当我进行比较时,第一个包注册打开的结果将出现,第二个包的结果将关闭注册。

我尝试遵循代码,但它不起作用。

function santy_shortcode_race_categories_event_post(){
    date_default_timezone_set('Asia/Kolkata');
    $result = '<div class="table-responsive">
                <table class="table table-bordered" style="text-align:center; background-color:#fff;">
                <thead>
                    <tr class="table-head">
                        <th>Package</th>
                        <th>Age Category</th>
                        <th>Ticket Price</th>
                        <th>Reg. Link</th>
                    </tr>
                </thead>
                <tbody>';
    $id = get_the_ID();
    $current_date = date("Y-m-d H:i:s");
    if (get_field('Race-Categories',$id)) {
        while (the_repeater_field('Race-Categories', $id)) {
            $event_start_date .= date("Y-m-d H:i:s", strtotime("+5 hours +30 minutes", strtotime(get_sub_field("ticket_registration_start"))));
            $event_end_date .= date("Y-m-d H:i:s", strtotime("+5 hours +30 minutes", strtotime(get_sub_field("ticket_registration_end_date"))));
            $result .='<tr>';
            $result .='<td>'.get_sub_field("package").'</td>';
            $result .='<td>'.get_sub_field("age_category").'</td>';
            $result .='<td>'.get_sub_field("ticket_price").'</td>';
            if ($current_date > $event_start_date) {
                $result .= '<td>Registration Open</td>';
            } else {
                $result .= '<td>Registration Close</td>';
            }
            $result .='</tr>';
        }
    } else {
        $result .='No Any Race categories allocated for this event. Try other events.';
    }
    $result .= '</tbody>
                </table>
                </div>';
    return $result;
}
php while-loop 高级自定义字段 日期比较 acfpro

评论

0赞 Stender 5/23/2022
好吧 - 正如我所看到的 - 那么对,他们都关闭了。1) - 您正在比较,但您创建的变量被称为 - 2) 我认为也应该如此,因为您希望开始日期晚于当前日期。$current_date > $event_start$event_start_date$current_date < $event_start_date
0赞 Stender 5/23/2022
如果你想确定 - 那么你应该在两个日期上运行 strtotime,所以你比较的是整数而不是日期格式
0赞 Santosh Khatri 5/23/2022
@Stender 谢谢,我已经更正了变量,但答案是相同的,在该行的每个表中,它都显示“注册开放”,但我有四个不同的事件开始日期。但是由于while循环,我认为它没有运行。
0赞 Stender 5/24/2022
根据 ACF 上的文档 - 已弃用,因为它在 IF 语句中使用时会导致不希望的结果。这就是你在这里所做的 - 也许改变它?the_repeater_field()have_rows()
0赞 Stender 5/24/2022
advancedcustomfields.com/resources/have_rows

答: 暂无答案