WPML

Visão geral do problema

O WooCommerce oferece um widget Filtrar por preço que permite que seus usuários filtrem facilmente seus produtos.

Atualmente, se você estiver usando nosso recurso multimoeda, notará que, nas moedas secundárias, os valores mín e máx são exibidos corretamente, no entanto, o filtro usa os preços do idioma padrão. Isso faz com que ele exiba os resultados errados.

Solução alternativa

Este problema foi corrigido. Atualizar para a versão mais recente resolve isso no seu site, portanto, você só precisa desta solução alternativa se ainda não puder atualizar.

Antes de prosseguir, faça um backup completo do seu site. Em seguida:

  1. Abra a pasta do WooCommerce Multilingual.
  2. Encontre o arquivo /woocommerce-multilingual/inc/currencies/class-wcml-multi-currency-prices.php.
  3. Vá para a linha 620.
  4. Altere:
    $args['where'] = str_replace( $wpdb->prepare( 'wc_product_meta_lookup.min_price >= %f', $min_price ), $wpdb->prepare( 'wc_product_meta_lookup.min_price >= %f', $min_price_in_default_currency ), $args['where'] );
    $args['where'] = str_replace( $wpdb->prepare( 'wc_product_meta_lookup.max_price <= %f', $max_price ), $wpdb->prepare( 'wc_product_meta_lookup.max_price <= %f', $max_price_in_default_currency ), $args['where'] );

    Para:

    $args['where'] = str_replace( $wpdb->prepare( '%f<wc_product_meta_lookup.min_price', $max_price ), $wpdb->prepare( '%f<wc_product_meta_lookup.min_price', $max_price_in_default_currency ), $args['where'] );
    $args['where'] = str_replace( $wpdb->prepare( '%f>wc_product_meta_lookup.max_price', $min_price ), $wpdb->prepare( '%f>wc_product_meta_lookup.max_price', $min_price_in_default_currency ), $args['where'] );

Todos os problemas conhecidos

Ainda está vendo este problema?

Se a atualização não resolver, envie uma dúvida de suporte e nós vamos analisar isso com você.