get_filters(); } if ( is_null( $post_types ) ) { $post_types = get_post_types( array( 'exclude_from_search' => false ) ); } /** * If the post types specified by the widget differ from the default set of searchable post types, * then we need to track their state. */ $active_post_types = array(); if ( Jetpack_Search_Helpers::post_types_differ_searchable( $post_types ) ) { // get the active filter buckets from the query $active_buckets = Jetpack_Search::instance()->get_active_filter_buckets(); $post_types_differ_query = Jetpack_Search_Helpers::post_types_differ_query( $post_types ); // remove any post_type filters from display if the current query // already specifies to match all post types if ( ! $post_types_differ_query ) { $active_buckets = array_filter( $active_buckets, array( __CLASS__, 'is_not_post_type_filter' ) ); } $active_post_types = Jetpack_Search_Helpers::get_active_post_types( $active_buckets ); if ( empty( $active_post_types ) ) { $active_post_types = $post_types; } if ( $post_types_differ_query ) { $filters = Jetpack_Search_Helpers::ensure_post_types_on_remove_url( $filters, $post_types ); } else { $filters = Jetpack_Search_Helpers::remove_active_from_post_type_buckets( $filters ); } } else { $post_types = array(); } foreach ( (array) $filters as $filter ) { if ( 'post_type' == $filter['type'] ) { self::render_filter( $filter, $post_types ); } else { self::render_filter( $filter, $active_post_types ); } } } /** * Renders a single filter that can be applied to the current search. * * @since 5.8.0 * * @param array $filter The filter to render. * @param array $default_post_types The default post types for this filter. */ public static function render_filter( $filter, $default_post_types ) { if ( empty( $filter ) || empty( $filter['buckets'] ) ) { return; } $query_vars = null; foreach ( $filter['buckets'] as $item ) { if ( $item['active'] ) { $query_vars = array_keys( $item['query_vars'] ); break; } } $clear_url = null; if ( ! empty( $query_vars ) ) { $clear_url = Jetpack_Search_Helpers::remove_query_arg( $query_vars ); if ( ! empty( $default_post_types ) ) { $clear_url = Jetpack_Search_Helpers::add_post_types_to_url( $clear_url, $default_post_types ); } } ?>