function widget($args, $instance) { if (!function_exists('WPCOM_elasticsearch') || !is_search()) { return; } $facets = WPCOM_elasticsearch()->get_search_facet_data(); $current_filters = WPCOM_elasticsearch()->get_current_filters(); if (!$facets && !$current_filters) { return; } $facets_found = false; foreach ($facets as $facet) { if (count($facet['items']) > 1) { $facets_found = true; break; } } if (!$facets_found && !$current_filters) { return; } $title = apply_filters('widget_title', !empty($instance['title']) ? $instance['title'] : 'Search Refinement', $instance, $this->id_base); echo $args['before_widget']; echo $args['before_title'] . $title . $args['after_title']; if ($current_filters) { echo '<h3>' . __('Current Filters', 'wpcom-elasticsearch') . '</h3>'; echo '<ul>'; foreach ($current_filters as $filter) { echo '<li><a href="' . esc_url($filter['url']) . '">' . sprintf(__('(X) %1$s: %2$s', 'wpcom-elasticsearch'), esc_html($filter['type']), esc_html($filter['name'])) . '</a></li>'; } if (count($current_filters) > 1) { echo '<li><a href="' . esc_url(add_query_arg('s', get_query_var('s'), home_url())) . '">' . __('Remove All Filters', 'wpcom-elasticsearch') . '</a></li>'; } echo '</ul>'; } foreach ($facets as $label => $facet) { if (count($facet['items']) < 2) { continue; } echo '<h3>' . $label . '</h3>'; echo '<ul>'; foreach ($facet['items'] as $item) { echo '<li><a href="' . esc_url($item['url']) . '">' . esc_html($item['name']) . '</a> (' . number_format_i18n(absint($item['count'])) . ')</li>'; } echo '</ul>'; } echo $args['after_widget']; }
$filters[] = array('url' => remove_query_arg('day'), 'name' => date('F jS, Y', mktime(0, 0, 0, absint($_GET['monthnum']), absint($_GET['day']), absint($_GET['year']))), 'type' => __('Day', 'wpcom-elasticsearch')); break; default: continue 3; } break; } // end switch() } return $filters; } public function get_taxonomy_query_var($taxonomy_name) { $taxonomy = get_taxonomy($taxonomy_name); if (!$taxonomy || is_wp_error($taxonomy)) { return false; } // category_name only accepts a single slug so make a custom, fake query var for categories if ('category_name' == $taxonomy->query_var) { $taxonomy->query_var = 'category'; } // Some taxonomies do not have a query_var allow custom filtering return apply_filters('wpcom_elasticsearch_taxonomy_query_var', $taxonomy->query_var, $taxonomy_name); } } function WPCOM_elasticsearch() { return WPCOM_elasticsearch::instance(); } WPCOM_elasticsearch();