private function obtener_eventos_proximas_tres_semanas() { $hoy = current_time( 'Y-m-d' ); $tres_semanas = date( 'Y-m-d', strtotime( '+21 days' ) ); $eventos_procesados = array(); if ( class_exists( 'EM_Events' ) ) { $em_events = EM_Events::get( array( 'scope' => array( $hoy, $tres_semanas ), 'orderby' => 'event_start_date,event_start_time', 'order' => 'ASC', 'limit' => 0 ) ); if ( ! empty( $em_events ) && is_array( $em_events ) ) { foreach ( $em_events as $EM_Event ) { if ( ! is_object( $EM_Event ) ) continue; $post_id = ! empty( $EM_Event->post_id ) ? $EM_Event->post_id : ( ! empty( $EM_Event->event_id ) ? $EM_Event->event_id : 0 ); $evento_obj = new stdClass(); $evento_obj->ID = $post_id; $evento_obj->post_title = ! empty( $EM_Event->event_name ) ? $EM_Event->event_name : 'Evento sin título'; // Extracción segura de fechas $evento_obj->event_start_date = method_exists( $EM_Event, 'start' ) ? $EM_Event->start()->date('Y-m-d') : ( isset($EM_Event->event_start_date) ? $EM_Event->event_start_date : $hoy ); $evento_obj->event_start_time = method_exists( $EM_Event, 'start' ) ? $EM_Event->start()->date('H:i') : ( isset($EM_Event->event_start_time) ? $EM_Event->event_start_time : '00:00' ); $evento_obj->guid = method_exists( $EM_Event, 'get_permalink' ) ? $EM_Event->get_permalink() : get_permalink( $post_id ); $eventos_procesados[] = $evento_obj; } } } return $eventos_procesados; }