static function get_info_by_post_type($id, $post_type = null) { if (in_array($post_type, array("hotel", "hotels", "st_hotels"))) { $post_type = "st_hotel"; } if (in_array($post_type, array("car", "cars", "st_car"))) { $post_type = "st_cars"; } if (in_array($post_type, array("rental", "rentals", "st_rentals"))) { $post_type = "st_rental"; } if (in_array($post_type, array("activity", "activities", "st_activity"))) { $post_type = "st_activity"; } if (in_array($post_type, array("tour", "tours", "st_tour"))) { $post_type = "st_tours"; } if (!$post_type) { return; } $location_meta_text = 'id_location'; if ($post_type == 'st_rental') { $location_meta_text = 'location_id'; } $location_id = get_the_ID(); global $wpdb; $sql = "SELECT ID\r\n\t\t\t\tFROM `{$wpdb->postmeta}` \r\n\t\t\t\tJOIN `{$wpdb->posts}` \r\n\t\t\t\tON \t{$wpdb->posts}.ID = {$wpdb->postmeta}.post_id \r\n\t\t\t\t\tand {$wpdb->postmeta}.meta_key = '{$location_meta_text}' \r\n\t\t\t\t\tand {$wpdb->postmeta}.meta_value = '{$location_id}'\r\n\t\t\t\t\tand {$wpdb->posts}.post_status = 'publish'\r\n\t\t\t\t\tand {$wpdb->posts}.post_type = '{$post_type}'\r\n\t\t\t\tGROUP BY {$wpdb->posts}.ID"; $results = $wpdb->get_results($sql, OBJECT); $num_rows = $wpdb->num_rows; // get review = count all comment number $comment_num = 0; foreach ($results as $row) { $comment_num = $comment_num + STReview::count_all_comment($row->ID); } wp_reset_query(); return array('post_type' => $post_type, 'post_type_name' => self::get_post_type_name($post_type), 'reviews' => $comment_num, 'offers' => $num_rows, 'min_max_price' => self::get_min_max_price_location($post_type, $location_id)); }
static function get_info_by_post_type($id, $post_type = null, $list = NULL) { if (!$post_type) { return; } if (!in_array($post_type, array('st_activity', 'st_hotel', 'st_rental', 'st_cars', 'st_tours', 'st_holidays', 'hotel_room'))) { return; } $location_meta_text = 'id_location'; if ($post_type == 'st_rental') { $location_meta_text = 'location_id'; } $where = " (1= 1 )"; $location_id = get_the_ID(); if (!$list) { $list = TravelHelper::getLocationByParent($location_id); } if (is_array($list) and !empty($list)) { $where .= " AND ("; $where_tmp = ""; foreach ($list as $item) { if (empty($where_tmp)) { $where_tmp .= "tb.multi_location LIKE '%_{$item}_%'"; } else { $where_tmp .= " OR tb.multi_location LIKE '%_{$item}_%'"; } } $list = implode(',', $list); $where_tmp .= " OR tb.{$location_meta_text} IN ({$list})"; $where .= $where_tmp . ")"; } else { $where = "(tb.multi_location LIKE '%_{$location_id}_%' \r\n OR tb.{$location_meta_text} IN ('{$location_id}')) "; } $results = array(); $num_rows = 0; global $wpdb; $table = $wpdb->prefix . $post_type; $join = " {$table} as tb ON {$wpdb->posts}.ID = tb.post_id "; $join = self::edit_join_wpml($join, $post_type); $where = self::edit_where_wpml($where, $post_type); if (TravelHelper::checkTableDuplicate($post_type)) { $sql = "SELECT {$wpdb->posts}.ID\r\n FROM {$wpdb->posts} \r\n join {$join} \r\n where {$where}\r\n GROUP BY {$wpdb->posts}.ID"; //echo $sql ; $results = $wpdb->get_results($sql, ARRAY_A); $num_rows = $wpdb->num_rows; wp_reset_postdata(); } // get review = count all comment number $comment_num = 0; if (is_array($results) and !empty($results)) { foreach ($results as $row) { $comment_num = $comment_num + STReview::count_all_comment($row['ID']); } } if ($num_rows > 1) { $name = self::get_post_type_name($post_type); } else { $name = self::get_post_type_name($post_type, true); } if ($list = TravelHelper::getLocationByParent(get_the_ID())) { $min_max_price = self::get_min_max_price_location($post_type, $list); } else { $min_max_price = self::get_min_max_price_location($post_type, $location_id); } return array('post_type' => $post_type, 'post_type_name' => $name, 'reviews' => $comment_num, 'offers' => $num_rows, 'min_max_price' => $min_max_price); }