Viewing 15 replies - 1 through 15 (of 15 total)
  • Hello Merkucio,

    For that filter you need to check code. can you plz tell me which plugin you are use?

    Thanks

    Thread Starter WP Gang

    (@merkucio)

    Hello mukesh.l

    Thanks for your reply. I use standart woocommerce filter by price widget.

    Hello

    you have one product with 3895GEL that’s wy it take maximum value of that product can you plz check all product value. i check you store but pagination is not work so next and prev is not work.

    Thanks

    also plz check product variation price also

    i see there it problem in that filter so you need to check code so that you get perfect solution.

    file path: /wp-content/plugins/woocommerce/includes/widgets/class-wc-widget-price-filter.php

    you need to check this $max variable value. if you get any problem tell me.

    Thread Starter WP Gang

    (@merkucio)

    🙂

    Problem is that I don’t have any product with 3895 GEL 🙂
    My price range is from 1 to 108 GEL.
    That’s why I open this topic.

    I had the products with this price but don’t have any more, even in Trash.

    And my store AJAX pagination works for my perfect in ie, google chrome and mozila.
    What browser do you use?! Try again please

    Here is my class-wc-widget-price-filter.php
    What to do?!

    <?php
    /**
     * Price Filter Widget and related functions
     *
     * Generates a range slider to filter products by price.
     *
     * @author 		WooThemes
     * @category 	Widgets
     * @package 	WooCommerce/Widgets
     * @version 	2.1.0
     * @extends 	WC_Widget
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly
    }
    
    class WC_Widget_Price_Filter extends WC_Widget {
    
    	/**
    	 * Constructor
    	 */
    	public function __construct() {
    		$this->widget_cssclass    = 'woocommerce widget_price_filter';
    		$this->widget_description = __( 'Shows a price filter slider in a widget which lets you narrow down the list of shown products when viewing product categories.', 'woocommerce' );
    		$this->widget_id          = 'woocommerce_price_filter';
    		$this->widget_name        = __( 'WooCommerce Price Filter', 'woocommerce' );
    		$this->settings           = array(
    			'title'  => array(
    				'type'  => 'text',
    				'std'   => __( 'Filter by price', 'woocommerce' ),
    				'label' => __( 'Title', 'woocommerce' )
    			)
    		);
    		parent::__construct();
    	}
    
    	/**
    	 * widget function.
    	 *
    	 * @see WP_Widget
    	 * @access public
    	 * @param array $args
    	 * @param array $instance
    	 * @return void
    	 */
    	public function widget( $args, $instance ) {
    		global $_chosen_attributes, $wpdb, $wp;
    
    		extract( $args );
    
    		if ( ! is_post_type_archive( 'product' ) && ! is_tax( get_object_taxonomies( 'product' ) ) )
    			return;
    
    		if ( sizeof( WC()->query->unfiltered_product_ids ) == 0 )
    			return; // None shown - return
    
    		$min_price = isset( $_GET['min_price'] ) ? esc_attr( $_GET['min_price'] ) : '';
    		$max_price = isset( $_GET['max_price'] ) ? esc_attr( $_GET['max_price'] ) : '';
    
    		wp_enqueue_script( 'wc-price-slider' );
    
    		$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
    
    		// Remember current filters/search
    		$fields = '';
    
    		if ( get_search_query() )
    			$fields .= '<input type="hidden" name="s" value="' . get_search_query() . '" />';
    
    		if ( ! empty( $_GET['post_type'] ) )
    			$fields .= '<input type="hidden" name="post_type" value="' . esc_attr( $_GET['post_type'] ) . '" />';
    
    		if ( ! empty ( $_GET['product_cat'] ) )
    			$fields .= '<input type="hidden" name="product_cat" value="' . esc_attr( $_GET['product_cat'] ) . '" />';
    
    		if ( ! empty( $_GET['product_tag'] ) )
    			$fields .= '<input type="hidden" name="product_tag" value="' . esc_attr( $_GET['product_tag'] ) . '" />';
    
    		if ( ! empty( $_GET['orderby'] ) )
    			$fields .= '<input type="hidden" name="orderby" value="' . esc_attr( $_GET['orderby'] ) . '" />';
    
    		if ( $_chosen_attributes ) foreach ( $_chosen_attributes as $attribute => $data ) {
    
    			$taxonomy_filter = 'filter_' . str_replace( 'pa_', '', $attribute );
    
    			$fields .= '<input type="hidden" name="' . esc_attr( $taxonomy_filter ) . '" value="' . esc_attr( implode( ',', $data['terms'] ) ) . '" />';
    
    			if ( $data['query_type'] == 'or' )
    				$fields .= '<input type="hidden" name="' . esc_attr( str_replace( 'pa_', 'query_type_', $attribute ) ) . '" value="or" />';
    		}
    
    		$min = $max = 0;
    		$post_min = $post_max = '';
    
    		if ( sizeof( WC()->query->layered_nav_product_ids ) === 0 ) {
    			$min = floor( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT min(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE ( meta_key = \'%3$s\' OR meta_key = \'%4$s\' )
    					AND meta_value != ""
    				', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price' )
    			) );
    			$max = ceil( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT max(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE meta_key = \'%3$s\'
    				', $wpdb->posts, $wpdb->postmeta, '_price' )
    			) );
    		} else {
    			$min = floor( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT min(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE ( meta_key =\'%3$s\' OR meta_key =\'%4$s\' )
    					AND meta_value != ""
    					AND (
    						%1$s.ID IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    						OR (
    							%1$s.post_parent IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    							AND %1$s.post_parent != 0
    						)
    					)
    				', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price'
    			) ) );
    			$max = ceil( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT max(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE meta_key =\'%3$s\'
    					AND (
    						%1$s.ID IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    						OR (
    							%1$s.post_parent IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    							AND %1$s.post_parent != 0
    						)
    					)
    				', $wpdb->posts, $wpdb->postmeta, '_price'
    			) ) );
    		}
    
    		if ( $min == $max )
    			return;
    
    		echo $before_widget . $before_title . $title . $after_title;
    
    		if ( get_option( 'permalink_structure' ) == '' )
    			$form_action = remove_query_arg( array( 'page', 'paged' ), add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) );
    		else
    			$form_action = preg_replace( '%\/page/[0-9]+%', '', home_url( $wp->request ) );
    
    		echo '<form method="get" action="' . esc_attr( $form_action ) . '">
    			<div class="price_slider_wrapper">
    				<div class="price_slider" style="display:none;"></div>
    				<div class="price_slider_amount">
    					<input type="text" id="min_price" name="min_price" value="' . esc_attr( $min_price ) . '" data-min="'.esc_attr( apply_filters( 'woocommerce_price_filter_widget_amount', $min ) ).'" placeholder="'.__('Min price', 'woocommerce' ).'" />
    					<input type="text" id="max_price" name="max_price" value="' . esc_attr( $max_price ) . '" data-max="'.esc_attr( apply_filters( 'woocommerce_price_filter_widget_amount', $max ) ).'" placeholder="'.__( 'Max price', 'woocommerce' ).'" />
    					<button type="submit" class="button">'.__( 'Filter', 'woocommerce' ).'</button>
    					<div class="price_label" style="display:none;">
    						'.__( 'Price:', 'woocommerce' ).' <span class="from"></span> — <span class="to"></span>
    					</div>
    					' . $fields . '
    					<div class="clear"></div>
    				</div>
    			</div>
    		</form>';
    
    		echo $after_widget;
    	}
    }

    yes pagination working fine for me now. you need to check value of $max

    $max = ceil( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT max(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE meta_key = \'%3$s\'
    				', $wpdb->posts, $wpdb->postmeta, '_price' )
    			) );

    OR

    $max = ceil( $wpdb->get_var(
    				$wpdb->prepare('
    					SELECT max(meta_value + 0)
    					FROM %1$s
    					LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
    					WHERE meta_key =\'%3$s\'
    					AND (
    						%1$s.ID IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    						OR (
    							%1$s.post_parent IN (' . implode( ',', array_map( 'absint', WC()->query->layered_nav_product_ids ) ) . ')
    							AND %1$s.post_parent != 0
    						)
    					)
    				', $wpdb->posts, $wpdb->postmeta, '_price'
    			) ) );

    print value of both and try to check sql query and run that query in sql

    can you plz check all product price and variation price because it comes for maximum price from all product.

    Thanks

    Thread Starter WP Gang

    (@merkucio)

    I check all products. No news. All my products are in 1-108 GEL price range.

    ohhh so how can i check in your system there is some bug but how i identify? is there any way?

    Thread Starter WP Gang

    (@merkucio)

    Hello,

    Thanks for your attention, but I found a strange solution).

    As I said, I had the old products with the high prices.

    Few days ago, I change the products without deleting – just change the product’s title and price.
    So thats why DB doesn’t shows but remembers the old prices.
    I hope, you understand what I mean.

    So I found that If I delete these kind of products and create new products as a new products, the price filter will forget all old prices)

    B.r.

    David

    yup i understood and i told you before you need to check all product price. great problem solve

    Thanks
    Mukesh

    Thread Starter WP Gang

    (@merkucio)

    The problem is that it was impossible to see the old price even in wordpress admin area.

    I replaced all old prices with new ones.
    I changed the titles and prices for ALL old products.

    So there were no products with 3895GEL prices in admin wordpress/woocommerce area.

    ok it’s strange for wc and wp

    Thread Starter WP Gang

    (@merkucio)

    Yeah) Thanks for your help.

Viewing 15 replies - 1 through 15 (of 15 total)

The topic ‘Problem with Filer by Price plugin’ is closed to new replies.