Jump to content

Postagens Recomendadas

Estou tendo problemas em uma busca por preço em site de imobiliária em Wordpress. Não entendo muito de programação, sou frontend, mas me viro quando preciso... Enfim, a forma como esses valores foram colocados pelo cliente é no wordpress foi pelo plugin ACF, via campo personalizado. Eles colocam assim: mil reais sendo 1.000,00, cem mil sendo 100.000,00. O problema é que na hora de buscar por faixa de preço, o valor de novecentos reais (900,00) aparece na mesma faixa do de 900 mil reais (900.000,00) quando seleciono a faixa com valor "650-900", por exemplo. Já percebi que o erro é porque ele não estava calculando nada após o ponto. Tentei fazer um jeito de modificar isso sem precisar mexer no banco de dados, mas ainda sem sucesso.

<form role="search" method="get" class="flex column" action="">
  <select id="intervalo_preco" name="preco">
    <option value="">Selecione Faixa de Preço</option>
    <option value="0-5">R$0 - R$500</option>
    <option value="5-10">R$501 - R$1000</option>
    <option value="10-20">R$1001 - R$2000</option>
    <option value="20-40">R$2001 - R$4000</option>
    <option value="40-60">R$4001 - R$6000</option>
    <option value="60+">R$6001 +</option>
  </select>
<button type="submit">procurar</button>
</form>
<h1>Imóveis para alugar</h1>
<?php
function sanitize_price($price) {
    $price = trim($price);
    $price = preg_replace('/[^0-9,.]/', '', $price);
    if (strpos($price, '.') !== false && strpos($price, ',') !== false) {
        // Remove o ponto e mantém os decimais após o ponto
        $price = str_replace('.', '', $price);
        $price = str_replace(',', '.', $price);
    } else {
        $price = explode(',', $price)[0];
    }
    return intval($price);
}
	$meta_query = array();
	if (isset($_GET['preco'])) {
      $preco_range = $_GET['preco'];
      $preco_ranges = explode('-', $preco_range);
      $min_price = isset($preco_ranges[0]) ? $preco_ranges[0] : '0';
      $max_price = isset($preco_ranges[1]) ? $preco_ranges[1] : '999999999';
      $meta_query[] = array(
		'key'     => 'preco',
        'value'   => array($min_price, $max_price),
		'type'    => 'CHAR',
		'compare' => 'BETWEEN',
		);
	}
		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
		$args = array(
                'post_type'      => 'listings',
                'posts_per_page' => 12,
                'orderby'        => 'date',
                'order'          => 'ASC',
                'tax_query'      => array(
                    array(
                        'taxonomy' => 'tipo',
                        'field'    => 'slug',
                        'terms'    => 'aluguel'
                    )
                ),
                'paged'          => $paged,
                'meta_query'     => $meta_query,
            );
	$alug_posts = new WP_Query($args);
	$total_posts_found = $alug_posts->found_posts;
	echo '<p>' . $total_posts_found . ' imóveis encontrados</p>';
		if ($alug_posts->have_posts()) :
			echo '<ul>';
			while ($alug_posts->have_posts()) : $alug_posts->the_post();
			?>
                    <li><h3><?php the_title();?></h3>
					<?php $preco = get_field('preco'); if (!empty($preco)) {?><p class="preco">R$ <?php echo $preco;?></p><?php } ?>
                    </li>
                <?php endwhile;
                echo '</ul>';
                custom_wp_pagenavi($alug_posts);
                wp_reset_postdata();
            else :
                echo 'Não há posts disponíveis.';
            endif;
            ?>

Agradeço muito!

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como corrigir a busca por faixa de preço no WordPress considerando valores com decimais?

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...