P @{Af   T |    @A||p |q (  @@}} @ O ѰUPl?`Un`mRp鱽U`pmQ UPpm𣱽Um+`UACnp갽Un<`PUm*𨴽UP@o𣱽Uo+`UAC(pp갽Up<`PU`o*EUPqUq/p>U8qqPUPPqu@U`qAUq<PUq4𣱽Uq+`UAC0Hrp갽Ur<`PUq*`UXsRp鱽UsQ UPsUs.`UnpspU s<PU s4𣱽Us+`Uö0tp갽Ut<`PUs*EUP@u𣱽U@`u+`Uövp갽Uv<0Ux>CAA. . 09 2 2 8A  @@A@. @. CAЛA2 2 3 3 AH3 H3 @`12   @@. Ax   @ѰUP?`UXFpUPPBUp<ഽU`p`UpR_U@Y UsU.`U(R_UP0 UQ U`PU4𣱽U+`U@`@pPUPPu갽U<0U >`PU@*`nU06?U0P0700U`>0UP >-A-A@ @` XAXAA x@@~ A x@@~    @ A @B   @:  ѰUP?ѰU`?ѰUp?ذU`EUpPtU<ഽUذU E_values ) ? ' checked' : ''; $selected .= ( 0 == $result['counter'] && '' == $selected ) ? ' disabled' : ''; $output .= '
'; $output .= esc_html( $result['facet_display_value'] ) . ' (' . $result['counter'] . ')'; $output .= '
'; } if ( 0 < $soft_limit && $soft_limit <= $key ) { $output .= ''; $output .= '' . __( 'See {num} more', 'fwp-front' ) . ''; $output .= '' . __( 'See less', 'fwp-front' ) . ''; } return $output; } /** * Generate the facet HTML (hierarchical taxonomies) */ function render_hierarchy( $params ) { $output = ''; $facet = $params['facet']; $selected_values = (array) $params['selected_values']; $values = FWP()->helper->sort_taxonomy_values( $params['values'], $facet['orderby'] ); $init_depth = -1; $last_depth = -1; foreach ( $values as $result ) { $depth = (int) $result['depth']; if ( -1 == $last_depth ) { $init_depth = $depth; } elseif ( $depth > $last_depth ) { $output .= '
'; } elseif ( $depth < $last_depth ) { for ( $i = $last_depth; $i > $depth; $i-- ) { $output .= '
'; } } $selected = in_array( $result['facet_value'], $selected_values ) ? ' checked' : ''; $selected .= ( 0 == $result['counter'] && '' == $selected ) ? ' disabled' : ''; $output .= '
'; $output .= esc_html( $result['facet_display_value'] ) . ' (' . $result['counter'] . ')'; $output .= '
'; $last_depth = $depth; } for ( $i = $last_depth; $i > $init_depth; $i-- ) { $output .= ''; } return $output; } /** * Filter the query based on selected values */ function filter_posts( $params ) { global $wpdb; $output = []; $facet = $params['facet']; $selected_values = $params['selected_values']; $sql = $wpdb->prepare( "SELECT DISTINCT post_id FROM {$wpdb->prefix}facetwp_index WHERE facet_name = %s", $facet['name'] ); // Match ALL values if ( 'and' == $facet['operator'] ) { foreach ( $selected_values as $key => $value ) { $results = facetwp_sql( $sql . " AND facet_value IN ('$value')", $facet ); $output = ( $key > 0 ) ? array_intersect( $output, $results ) : $results; if ( empty( $output ) ) { break; } } } // Match ANY value else { $selected_values = implode( "','", $selected_values ); $output = facetwp_sql( $sql . " AND facet_value IN ('$selected_values')", $facet ); } return $output; } /** * Output any front-end scripts */ function front_scripts() { FWP()->display->json['expand'] = '[+]'; FWP()->display->json['collapse'] = '[-]'; } /** * Output admin settings HTML */ function settings_html() { $this->render_setting( 'parent_term' ); $this->render_setting( 'modifiers' ); $this->render_setting( 'hierarchical' ); $this->render_setting( 'show_expanded' ); $this->render_setting( 'ghosts' ); $this->render_setting( 'operator' ); $this->render_setting( 'orderby' ); $this->render_setting( 'count' ); $this->render_setting( 'soft_limit' ); } /** * (Front-end) Attach settings to the AJAX response */ function settings_js( $params ) { $expand = empty( $params['facet']['show_expanded'] ) ? 'no' : $params['facet']['show_expanded']; return [ 'show_expanded' => $expand ]; } }