Ejemplo n.º 1
0
 /**
  * Modifies a WP_Query's post results by using Lift search to get the post
  * ids and returning the associated posts.  WP_Query is updated to reflect the
  * counts returned from the Lift search
  * @param array $posts
  * @param WP_Query $wp_query
  * @return array $posts
  */
 public static function _filter_posts_results($posts, $wp_query)
 {
     $lift_query = Lift_WP_Query::GetInstance($wp_query);
     if ($lift_query->has_valid_result()) {
         return $lift_query->get_posts();
     }
     return $posts;
 }
 /**
  * Lift_Search_Form constructor.
  */
 private function __construct($wp_query)
 {
     $this->lift_query = Lift_WP_Query::GetInstance($wp_query);
     $this->fields = apply_filters('lift_form_filters', array(), $this);
 }
 /**
  * Returns an array of selectable filter items
  * @param Lift_WP_Query $lift_query
  * @return array
  */
 protected function getControlItems($lift_query)
 {
     $facets = $lift_query->get_facets();
     if (empty($facets[$this->field->getName()])) {
         return array();
     }
     $my_facets = $facets[$this->field->getName()];
     $items = array();
     $selectedFound = false;
     $current_request = $this->field->bqToRequest($this->field->wpToBooleanQuery($lift_query->wp_query->query_vars));
     //$current_request = array_map( 'arrayify', $current_request );
     foreach ($my_facets as $bq_value => $count) {
         $facet_request_vars = $this->field->bqToRequest($this->field->getName() . ':' . $bq_value);
         $facet_wp_vars = $this->field->requestToWP($facet_request_vars);
         //determine if this item is selected by comparing the relative request vars to this query
         //we're assuming that these don't go further than 1 level deep
         $selected = 0 === count(array_diff_semi_assoc_recursive($facet_request_vars, $current_request));
         if ($selected) {
             $selectedFound = true;
         }
         $label = $this->field->wpToLabel($facet_wp_vars);
         if ($count) {
             $label = sprintf('%1$s (%2$d)', $label, $count);
         }
         $item = (object) array('selected' => $selected, 'value' => $facet_request_vars, 'label' => $label);
         $items[] = $item;
     }
     if (!$selectedFound) {
         $selectedBq = $this->field->wpToBooleanQuery($lift_query->wp_query->query_vars);
         if ($selectedBq) {
             $items[] = (object) array('selected' => true, 'value' => $this->field->bqToRequest($selectedBq), 'label' => sprintf('%1$s (%2$d)', $this->field->wpToLabel($lift_query->wp_query->query_vars), $lift_query->wp_query->found_posts));
         }
     }
     return $items;
 }