top
/** * FILTRO DE SEGURANÇA DO STACK: remove eventos multi-dia da view de Dia/Lista * quando uma data específica está selecionada. Funciona em F5 e AJAX. */ add_filter( 'tribe_events_views_v2_stack_filter_event', 'tec_v2_filtrar_stack_dia_unico', 10, 2 ); function tec_v2_filtrar_stack_dia_unico( $keep, $event ) { // Se outro filtro já descartou, respeita if ( ! $keep ) return $keep; // --- 1. Detectar a view atual --- $view_slug = ''; if ( function_exists('tribe_context') ) { $view_slug = tribe_context()->get('view'); } if ( empty($view_slug) && !empty($_GET['view']) ) { $view_slug = sanitize_text_field($_GET['view']); } if ( empty($view_slug) && !empty($_GET['eventDisplay']) ) { $view_slug = sanitize_text_field($_GET['eventDisplay']); } // Aplica apenas nas views Day e List (não na Month, onde multi-dia é desejado) if ( !in_array($view_slug, array('day', 'list'), true) ) { return $keep; } // --- 2. Detectar a data alvo selecionada --- $data_alvo = ''; if ( !empty( $_GET['tribe-bar-date'] ) ) { $data_alvo = sanitize_text_field( $_GET['tribe-bar-date'] ); } elseif ( !empty( $_GET['event_date'] ) ) { $data_alvo = sanitize_text_field( $_GET['event_date'] ); } elseif ( !empty( $_REQUEST['tribe-bar-date'] ) ) { $data_alvo = sanitize_text_field( $_REQUEST['tribe-bar-date'] ); } elseif ( !empty( $_REQUEST['event_date'] ) ) { $data_alvo = sanitize_text_field( $_REQUEST['event_date'] ); } // Se não há data específica (ex: "upcoming", "past"), não interfere if ( empty($data_alvo) || !preg_match('/^(\d{4}-\d{2}-\d{2})/', $data_alvo, $matches) ) { return $keep; } // Se o filtro custom de intervalo está ativo, não interfere (ele tem prioridade) if ( !empty( $_GET['data_inicio'] ) || !empty( $_GET['data_fim'] ) ) { return $keep; } $data_limpa = $matches[1]; // YYYY-MM-DD // --- 3. Obter ID e data de início do evento --- $event_id = 0; if ( is_object($event) && isset($event->ID) ) { $event_id = $event->ID; } elseif ( is_numeric($event) ) { $event_id = (int) $event; } elseif ( is_array($event) && isset($event['ID']) ) { $event_id = $event['ID']; } if ( !$event_id ) return $keep; $start_date = get_post_meta( $event_id, '_EventStartDate', true ); if ( empty($start_date) ) return $keep; $event_start_date = substr( $start_date, 0, 10 ); // YYYY-MM-DD // --- 4. Regra: só mantém se o evento COMEÇA no dia selecionado --- if ( $event_start_date !== $data_limpa ) { return false; // Descarta da pilha } return $keep; }
Endereço
Rua Senador Carlos Teixeira de Carvalho, 564, Aclimação, São Paulo - SP, CEP: 01535-010