コード例 #1
0
 function query_get_post_types($query, $_if_empty_set_post_types = FALSE)
 {
     $query_post_types = isset($query->query_vars['post_type']) ? $query->query_vars['post_type'] : array();
     if (!empty($query_post_types) && !is_array($query_post_types)) {
         $query_post_types = (array) $query_post_types;
     }
     if (empty($query_post_types) && !is_array($query_post_types)) {
         $query_post_types = array();
     }
     /**
      * 
      *   If empty post type query field AND use default category taxonomy, use post
      *   To check further
      * 
      */
     if (empty($query_post_types) && $_if_empty_set_post_types === FALSE) {
         $taxonomies = array();
         if (isset($query->tax_query) && isset($query->tax_query->queries)) {
             $taxonomies = APTO_query_utils::get_query_taxonomies($query->tax_query->queries);
         }
         if (count($taxonomies) > 0 && count($taxonomies) < 2) {
             reset($taxonomies);
             $query_taxonomy = current($taxonomies);
             if ($query_taxonomy == 'category') {
                 $query_post_types[] = 'post';
             }
         }
     }
     if (empty($query_post_types) && $_if_empty_set_post_types === TRUE) {
         $taxonomies = array();
         if (isset($query->tax_query) && isset($query->tax_query->queries)) {
             $taxonomies = APTO_query_utils::get_query_taxonomies($query->tax_query->queries);
         }
         $ignore = array('revision', 'nav_menu_item');
         foreach ($this->get_post_types($ignore) as $pt) {
             $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies($pt);
             if (array_intersect($taxonomies, $object_taxonomies)) {
                 $query_post_types[] = $pt;
             }
         }
         //v3.0  ??????chose the first
         /*
         if(count($query_post_types) > 1)
             $query_post_types  =   array_slice($query_post_types, 0, 1);
         */
         if (count($query_post_types) < 1) {
             $query_post_types[] = 'post';
         }
     }
     return $query_post_types;
 }