/**
  * Set any query flags
  *
  * @param WP_Query $query
  *
  * @return void
  **/
 public static function parse_query($query)
 {
     // set paged
     if ($query->is_main_query() && isset($_GET['tribe_paged'])) {
         $query->set('paged', $_REQUEST['tribe_paged']);
     }
     // Add tribe events post type to tag queries
     if ($query->is_tag && (array) $query->get('post_type') != array(TribeEvents::POSTTYPE)) {
         $types = $query->get('post_type');
         if (empty($types)) {
             $types = array('post');
         }
         if (is_array($types)) {
             $types[] = TribeEvents::POSTTYPE;
         } else {
             if (is_string($types)) {
                 $types = array($types, TribeEvents::POSTTYPE);
             } else {
                 if ($types != 'any') {
                     $types = array('post', TribeEvents::POSTTYPE);
                 }
             }
         }
         $query->set('post_type', $types);
     }
     $types = !empty($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array();
     // check if any possiblity of this being an event query
     $query->tribe_is_event = in_array(TribeEvents::POSTTYPE, $types) && count($types) < 2 ? true : false;
     $query->tribe_is_multi_posttype = in_array(TribeEvents::POSTTYPE, $types) && count($types) >= 2 || in_array('any', $types) ? true : false;
     if ('default' === $query->get('eventDisplay')) {
         $query->set('eventDisplay', TribeEvents::instance()->default_view());
     }
     // check if any possiblity of this being an event category
     $query->tribe_is_event_category = !empty($query->query_vars[TribeEvents::TAXONOMY]) ? true : false;
     $query->tribe_is_event_venue = in_array(TribeEvents::VENUE_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_organizer = in_array(TribeEvents::ORGANIZER_POST_TYPE, $types) ? true : false;
     $query->tribe_is_event_query = $query->tribe_is_event || $query->tribe_is_event_category || $query->tribe_is_event_venue || $query->tribe_is_event_organizer ? true : false;
     // move along, this is not the query you are looking for
     // is the query pulling posts from the past
     if ($query->is_main_query() && !empty($_REQUEST['tribe_event_display']) && $_REQUEST['tribe_event_display'] == 'past') {
         $query->tribe_is_past = true;
     } elseif (tribe_is_ajax_view_request() && $query->get('eventDisplay') == 'past') {
         $query->tribe_is_past = true;
     } else {
         $query->tribe_is_past = isset($query->tribe_is_past) ? $query->tribe_is_past : false;
     }
     // never allow 404 on month view
     if ($query->is_main_query() && $query->get('eventDisplay') == 'month' && !$query->is_tax && !$query->tribe_is_event_category) {
         $query->is_post_type_archive = true;
         $query->queried_object = get_post_type_object(TribeEvents::POSTTYPE);
         $query->queried_object_id = 0;
     }
     // check if is_event_query === true and hook filter
     if ($query->tribe_is_event_query) {
         // fixing is_home param
         $query->is_home = !empty($query->query_vars['is_home']) ? $query->query_vars['is_home'] : false;
         do_action('tribe_events_parse_query', $query);
     }
 }
예제 #2
0
파일: Templates.php 프로젝트: TMBR/johnjohn
 /**
  * Get the correct internal page template
  *
  * @return string Template class
  */
 public static function get_current_template_class()
 {
     $class = '';
     // list view
     if (tribe_is_list_view() || tribe_is_showing_all() || tribe_is_ajax_view_request('list')) {
         $class = 'Tribe__Events__Template__List';
     } elseif (tribe_is_month() || tribe_is_ajax_view_request('month')) {
         $class = 'Tribe__Events__Template__Month';
     } elseif (tribe_is_day() || tribe_is_ajax_view_request('day')) {
         $class = 'Tribe__Events__Template__Day';
     } elseif (is_singular(Tribe__Events__Main::POSTTYPE)) {
         $class = 'Tribe__Events__Template__Single_Event';
     }
     // apply filters
     // @todo remove deprecated filter in 3.4
     return apply_filters('tribe_events_current_template_class', apply_filters('tribe_current_events_template_class', $class));
 }
예제 #3
0
 /**
  * Specify the PHP class for the current page template
  *
  * @param string $class The current class we are filtering.
  *
  * @return string The class.
  */
 public function get_current_template_class($class)
 {
     // venue view
     if (is_singular(Tribe__Events__Main::VENUE_POST_TYPE)) {
         $class = 'Tribe__Events__Pro__Templates__Single_Venue';
     } elseif (is_singular(Tribe__Events__Main::ORGANIZER_POST_TYPE)) {
         $class = 'Tribe__Events__Pro__Templates__Single_Organizer';
     } elseif (tribe_is_week() || tribe_is_ajax_view_request('week')) {
         $class = 'Tribe__Events__Pro__Templates__Week';
     } elseif (tribe_is_photo() || tribe_is_ajax_view_request('photo')) {
         $class = 'Tribe__Events__Pro__Templates__Photo';
     } elseif (tribe_is_map() || tribe_is_ajax_view_request('map')) {
         $class = 'Tribe__Events__Pro__Templates__Map';
     }
     return $class;
 }
예제 #4
0
 /**
  * Get the first day of the week from a provided date
  *
  * @param null|mixed $date  given date or week # (week # assumes current year)
  *
  * @return string
  * @todo move logic to Tribe__Events__Date_Utils
  */
 function tribe_get_first_week_day($date = null)
 {
     global $wp_query;
     $offset = 7 - get_option('start_of_week', 0);
     if (tribe_is_ajax_view_request()) {
         $date = is_null($date) ? $_REQUEST['eventDate'] : $date;
     } else {
         $date = is_null($date) ? $wp_query->get('start_date') : $date;
     }
     try {
         $date = new DateTime($date);
     } catch (exception $e) {
         $date = new DateTime();
     }
     // Clone to avoid altering the original date
     $r = clone $date;
     $r->modify(-(($date->format('w') + $offset) % 7) . 'days');
     return apply_filters('tribe_get_first_week_day', $r->format('Y-m-d'));
 }