如何正确过滤Corsizio API返回的活动列表以显示近期活动?
问题:Corsizio API活动列表未显示7/8月近期活动,反而展示年底活动
我是PHP和WordPress开发新手,正在开发一款插件,核心功能是搜索数据库返回查询结果,同时在「推荐」板块展示来自Corsizio API的即将到来的活动列表。目前遇到的问题是:推荐板块显示的是年底的活动,但应该展示7/8月的近期活动,尝试多种方法都没能解决。
以下是我的现有代码:
获取推荐课程的API请求函数
// Function to fetch suggested courses from Corsizio API function get_suggested_courses($license_number) { $api_url = 'https://api.corsizio.com/v1/events'; $api_key = 'API_KEY'; error_log('Fetching events from Corsizio API...'); $response = wp_remote_get($api_url, array( 'headers' => array( 'Authorization' => 'Bearer ' . $api_key, ), )); if (is_wp_error($response)) { error_log('API request failed: ' . $response->get_error_message()); return []; } $body = wp_remote_retrieve_body($response); $data = json_decode($body); $events = $data->list ?? []; // Log the fetched events error_log('Fetched events: ' . print_r($events, true)); error_log('Number of events fetched: ' . count($events)); // If license number is provided, filter the events if (!empty($license_number)) { $license_prefix = substr($license_number, 0, 2); $events = array_filter($events, function($event) use ($license_prefix) { return strpos($event->summary, $license_prefix) !== false; }); // Log the events after filtering by license prefix error_log('Events after filtering by license prefix: ' . print_r($events, true)); error_log('Number of events after filtering by license prefix: ' . count($events)); } // Filter events to only include the 5 most recent ones $filtered_events = array_slice($events, 0, 5); // Log the filtered events error_log('Filtered events: ' . print_r($filtered_events, true)); error_log('Number of filtered events: ' . count($filtered_events)); return $filtered_events; }
前端渲染推荐课程的代码片段
// Insert suggested courses here $first_license_number = !empty($license_results) ? $license_results[0]->license_number : null; $suggested_courses = get_suggested_courses($first_license_number); if (!empty($suggested_courses)) { ?> <h3>Suggested Courses</h3> <table> <thead> <tr> <th>Course Title</th> <th>Start Date</th> <th>Location</th> <th>Register</th> </tr> </thead> <tbody> <?php foreach ($suggested_courses as $event) : // Check if the necessary properties exist before accessing them $course_title = isset($event->name) ? $event->name : 'N/A'; $summary = isset($event->summary) ? $event->summary : 'N/A'; $start_date = isset($event->startDate) ? (new DateTime($event->startDate))->format('m/d/Y') : 'N/A'; $location = isset($event->location) ? $event->location : 'N/A'; $register_url = isset($event->formUrl) ? $event->formUrl : '#'; ?> <tr> <td><?php echo esc_html($course_title); ?></td> <td><?php echo esc_html($start_date); ?></td> <td><?php echo esc_html($location); ?></td> <td><a href="<?php echo esc_url($register_url); ?>" target="_blank">Click Here to Register</a></td> </tr> <?php endforeach; ?> </tbody> </table>
当前活动展示效果:
以上是插件的部分代码,如需查看完整代码请告知。
内容的提问来源于stack exchange,提问作者AmazinAzn
相关产品推荐
相关产品推荐

