widget_cssclass = 'widget-event-filter'; $this->widget_description = __( "Event filter widget", 'yogaz' ); $this->widget_id = 'dh_widget_event_filter'; $this->widget_name = __( 'DH Event Filter', 'yogaz' ); $this->cached = false; $filter_list= array( 'event_cat'=>__('Category','yogaz'), 'event_location'=>__('Location','yogaz'), 'date'=>__('Date','yogaz') ); $this->settings = array( 'title' => array( 'type' => 'text', 'std' => __( 'Filter by', 'yogaz' ), 'label' => __( 'Title', 'yogaz' ) ), 'filter_by' => array( 'type' => 'select', 'std' => 'event_cat', 'label' => __( 'Filter by', 'yogaz' ), 'options' => $filter_list ), 'query_type' => array( 'type' => 'select', 'std' => 'and', 'label' => __( 'Query type', 'yogaz' ), 'options' => array( 'and' => __( 'AND', 'yogaz' ), 'or' => __( 'OR', 'yogaz' ) ) ), ); parent::__construct(); } protected function _get_filtered_term_event_counts( $term_ids, $taxonomy, $query_type ) { global $wpdb; $tax_query = DH_PostType_Event::get_main_tax_query(); $meta_query = DH_PostType_Event::get_main_meta_query(); if ( 'or' === $query_type ) { foreach ( $tax_query as $key => $query ) { if ( $taxonomy === $query['taxonomy'] ) { unset( $tax_query[ $key ] ); } } } $meta_query = new WP_Meta_Query( $meta_query ); $tax_query = new WP_Tax_Query( $tax_query ); $meta_query_sql = $meta_query->get_sql( 'post', $wpdb->posts, 'ID' ); $tax_query_sql = $tax_query->get_sql( $wpdb->posts, 'ID' ); // Generate query $query = array(); $query['select'] = "SELECT COUNT( DISTINCT {$wpdb->posts}.ID ) as term_count, terms.term_id as term_count_id"; $query['from'] = "FROM {$wpdb->posts}"; $query['join'] = " INNER JOIN {$wpdb->term_relationships} AS term_relationships ON {$wpdb->posts}.ID = term_relationships.object_id INNER JOIN {$wpdb->term_taxonomy} AS term_taxonomy USING( term_taxonomy_id ) INNER JOIN {$wpdb->terms} AS terms USING( term_id ) " . $tax_query_sql['join'] . $meta_query_sql['join']; $query['where'] = " WHERE {$wpdb->posts}.post_type IN ( 'dh_event' ) AND {$wpdb->posts}.post_status = 'publish' " . $tax_query_sql['where'] . $meta_query_sql['where'] . " AND terms.term_id IN (" . implode( ',', array_map( 'absint', $term_ids ) ) . ") "; if ( $search = DH_PostType_Event::get_main_search_query_sql() ) { $query['where'] .= ' AND ' . $search; } $query['group_by'] = "GROUP BY terms.term_id"; $query = apply_filters( 'dh_get_filtered_term_event_counts_query', $query ); $query = implode( ' ', $query ); $results = $wpdb->get_results( $query ); return wp_list_pluck( $results, 'term_count', 'term_count_id' ); } protected function _get_current_term_id() { return absint( is_tax() ? get_queried_object()->term_id : 0 ); } protected function _get_page_base_url( $taxonomy ='', $by_date = false) { if ( defined( 'DH_EVENT_IS_ON_FRONT' ) ) { $link = home_url(); } elseif ( is_post_type_archive( 'dh_event' ) || is_page( wc_get_page_id( 'shop' ) ) ) { $link = get_post_type_archive_link( 'dh_event' ); } elseif ( is_tax( 'event_cat' ) ) { $link = get_term_link( get_query_var( 'event_cat' ), 'event_cat' ); } elseif ( is_tax( 'event_tag' ) ) { $link = get_term_link( get_query_var( 'event_tag' ), 'event_tag' ); }elseif ( is_tax( 'event_location' ) ) { $link = get_term_link( get_query_var( 'event_location' ), 'event_location' ); } else { $queried_object = get_queried_object(); $link = get_term_link( $queried_object->slug, $queried_object->taxonomy ); } //Date if ( !$by_date && isset( $_GET['filter_date'] ) ) { $link = add_query_arg( 'filter_date', dh_clean( $_GET['filter_date'] ), $link ); } // Orderby if ( isset( $_GET['orderby'] ) ) { $link = add_query_arg( 'orderby', dh_clean( $_GET['orderby'] ), $link ); } /** * Search Arg. * To support quote characters, first they are decoded from " entities, then URL encoded. */ if ( get_search_query() ) { $link = add_query_arg( 's', rawurlencode( htmlspecialchars_decode( get_search_query() ) ), $link ); } // Post Type Arg if ( isset( $_GET['post_type'] ) ) { $link = add_query_arg( 'post_type', dh_clean( $_GET['post_type'] ), $link ); } // All current filters if ( $_chosen_filters = DH_PostType_Event::get_current_filters() ) { foreach ( $_chosen_filters as $name => $data ) { if (!empty($taxonomy) && $name === $taxonomy ) { continue; } $filter_name = sanitize_title( str_replace('event_', '', $name) ); if ( ! empty( $data['terms'] ) ) { $link = add_query_arg( 'filter_' . $filter_name, implode( ',', $data['terms'] ), $link ); } if ( 'or' == $data['query_type'] ) { $link = add_query_arg( 'query_type_' . $filter_name, 'or', $link ); } } } return $link; } /** * Return the currently viewed term slug. * @return int */ protected function _get_current_term_slug() { return absint( is_tax() ? get_queried_object()->slug : 0 ); } protected function _get_filtered_date_event_counts( $date_index ) { global $wpdb; $tax_query = DH_PostType_Event::get_main_tax_query(); $meta_query = DH_PostType_Event::get_main_meta_query(); // Unset current date filter foreach ( $meta_query as $key => $query ) { if ( ! empty( $query['date_filter'] ) ) { unset( $meta_query[ $key ] ); } } // Set new date filter $meta_query[] = array( 'key' => '_dh_date_start_index', 'value' => $date_index, 'compare' => '==', 'type' => 'DECIMAL', 'date_filter' => true ); $meta_query = new WP_Meta_Query( $meta_query ); $tax_query = new WP_Tax_Query( $tax_query ); $meta_query_sql = $meta_query->get_sql( 'post', $wpdb->posts, 'ID' ); $tax_query_sql = $tax_query->get_sql( $wpdb->posts, 'ID' ); $sql = "SELECT COUNT( {$wpdb->posts}.ID ) FROM {$wpdb->posts} "; $sql .= $tax_query_sql['join'] . $meta_query_sql['join']; $sql .= " WHERE {$wpdb->posts}.post_type = https://zenzo.tw/sitemap-misc.xml 2025-07-12T22:10:44+00:00 https://zenzo.tw/sitemap-pt-post-2025-07.xml 2025-07-12T22:10:44+00:00 https://zenzo.tw/sitemap-pt-post-2025-06.xml 2025-07-07T15:07:36+00:00 https://zenzo.tw/sitemap-pt-post-2025-05.xml 2025-06-25T09:09:41+00:00 https://zenzo.tw/sitemap-pt-post-2025-04.xml 2025-06-16T13:23:31+00:00 https://zenzo.tw/sitemap-pt-post-2025-03.xml 2025-06-30T08:59:57+00:00 https://zenzo.tw/sitemap-pt-post-2025-02.xml 2025-06-24T13:17:02+00:00 https://zenzo.tw/sitemap-pt-post-2025-01.xml 2025-06-05T07:21:38+00:00 https://zenzo.tw/sitemap-pt-post-2024-12.xml 2025-06-05T09:01:34+00:00 https://zenzo.tw/sitemap-pt-post-2024-11.xml 2025-06-05T06:45:11+00:00 https://zenzo.tw/sitemap-pt-post-2024-10.xml 2025-05-02T07:56:18+00:00 https://zenzo.tw/sitemap-pt-post-2024-09.xml 2025-06-05T08:36:35+00:00 https://zenzo.tw/sitemap-pt-post-2024-08.xml 2025-06-05T08:30:59+00:00 https://zenzo.tw/sitemap-pt-post-2024-07.xml 2025-03-25T12:38:45+00:00 https://zenzo.tw/sitemap-pt-post-2024-05.xml 2025-03-26T09:57:41+00:00 https://zenzo.tw/sitemap-pt-post-2024-04.xml 2025-04-08T07:26:40+00:00 https://zenzo.tw/sitemap-pt-post-2024-03.xml 2025-04-22T22:02:57+00:00 https://zenzo.tw/sitemap-pt-post-2024-02.xml 2025-03-26T11:28:57+00:00 https://zenzo.tw/sitemap-pt-post-2023-12.xml 2025-03-12T20:30:29+00:00 https://zenzo.tw/sitemap-pt-post-2023-11.xml 2025-03-07T07:49:12+00:00 https://zenzo.tw/sitemap-pt-post-2023-10.xml 2025-03-14T13:00:05+00:00 https://zenzo.tw/sitemap-pt-post-2023-09.xml 2025-04-10T11:23:14+00:00 https://zenzo.tw/sitemap-pt-post-2023-08.xml 2025-06-11T09:57:50+00:00 https://zenzo.tw/sitemap-pt-post-2023-07.xml 2025-04-24T15:12:45+00:00 https://zenzo.tw/sitemap-pt-post-2023-06.xml 2025-04-07T19:24:08+00:00 https://zenzo.tw/sitemap-pt-post-2023-05.xml 2025-04-07T17:21:50+00:00 https://zenzo.tw/sitemap-pt-post-2023-04.xml 2025-04-03T12:25:02+00:00 https://zenzo.tw/sitemap-pt-post-2023-02.xml 2025-04-02T09:38:02+00:00 https://zenzo.tw/sitemap-pt-post-2022-11.xml 2025-04-10T00:07:12+00:00 https://zenzo.tw/sitemap-pt-post-2022-09.xml 2025-03-19T12:10:18+00:00 https://zenzo.tw/sitemap-pt-post-2022-08.xml 2025-03-17T17:19:13+00:00 https://zenzo.tw/sitemap-pt-post-2021-10.xml 2025-05-07T11:12:28+00:00 https://zenzo.tw/sitemap-pt-post-2021-09.xml 2025-06-22T17:05:11+00:00 https://zenzo.tw/sitemap-pt-post-2021-06.xml 2025-04-08T12:01:20+00:00 https://zenzo.tw/sitemap-pt-post-2020-11.xml 2025-04-25T09:15:33+00:00 https://zenzo.tw/sitemap-pt-post-2020-08.xml 2025-04-03T13:36:06+00:00 https://zenzo.tw/sitemap-pt-post-1999-11.xml 2025-06-28T04:45:59+00:00 https://zenzo.tw/sitemap-pt-page-2022-08.xml 2022-09-20T15:31:22+00:00 https://zenzo.tw/sitemap-pt-page-2017-08.xml 2023-06-20T07:17:12+00:00