• Tenho um site de imóveis e preciso criar um filtro de valor, ou seja, oferecer a possibilidade de filtrar por valor.

    O campo valor tem nome de “valor”

    Como fazer?

    No exemplo abaixo eu coloquei um filtro para pegar somente o estado “TO” gostaria de colocar um filtro de valor.

    Exemplo:

    Valor mínimo: $80.000,00
    Valor Máximo: $150.000,00

    query_posts(array(
    ‘post_status’ => ‘publish’,
    ‘post_type’ => ‘post’,
    ‘tax_query’ => [
    ‘relation’ => ‘OR’,
    [
    ‘taxonomy’ => ‘estado’,
    ‘field’ => ‘slug’,
    ‘terms’ => ‘to’
    ],
    ],
    ) );

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • Use o argumento meta_query. E salve o valor de cada item como meta_data, assim é só você fazer algo como:

    'meta_query' => [
      [
        'key' => 'valor',
        'valor' => floatval( $_GET['valor_minimo'] ),
        'compare' => '>='
      ],
      [
        'key' => 'valor',
        'valor' => floatval( $_GET['valor_maximo'] ),
        'compare' => '<='
      ],
    ]

    Algo nessa direção.

    Notei um erro ali, nas array os indíces devem ser “key”, “value” e “compare” (eu escrevi “valor” ao invés de “value”).

    Criador do tópico rcsouza

    (@rcsouza)

    <?php

    query_posts(array(
    ‘post_status’ => ‘publish’,
    ‘post_type’ => ‘post’,
    ‘tax_query’ => [
    ‘relation’ => ‘OR’,
    [
    ‘taxonomy’ => ‘estado’,
    ‘field’ => ‘slug’,
    ‘terms’ => ‘sp’
    ],
    ],

    ‘meta_query’ => [
    [
    ‘key’ => ‘valor’,
    ‘value’ => floatval( ‘1000’ ),
    ‘compare’ => ‘>=’
    ],
    [
    ‘key’ => ‘valor’,
    ‘value’ => floatval( ‘4000000’ ),
    ‘compare’ => ‘<=’
    ],
    ]

    ) );

    ?>

    Criador do tópico rcsouza

    (@rcsouza)

    Luiz Paulo Bills, funcionou. Obrigado.

    Criador do tópico rcsouza

    (@rcsouza)

    Vou te mandar um e-mail.

    Criador do tópico rcsouza

    (@rcsouza)

    A query abaixo exibe em um SELECT todos os códigos DDD publicados no site

    <?php
    $args=array(
    ‘taxonomy’ => ‘codigo_regiao’,
    );

    $categories=get_terms($args);
    foreach($categories as $category) {
    echo ‘<option class=”level-0″ value=”‘. $category->name.'”>’. $category->name.’ (‘. $category->count . ‘)</option> ‘;
    }

    ?>

    Preciso alterar essa query de forma que sejam exibidos APENAS os códigos DDD de um determinado ESTADO.

    O exemplo na prática é que ao selecionar um ESTADO, sejam exibidos apenas os códigos DDD desse estado, lembrando que são apenas os Códigos DDD publicados no site.

    Criador do tópico rcsouza

    (@rcsouza)

    Estou tentando dessa forma:
    <?php
    $args=array(
    ‘post_status’ => ‘publish’,
    ‘post_type’ => ‘post’,
    ‘tax_query’ => [
    ‘relation’ => ‘OR’,
    [
    ‘taxonomy’ => ‘codigo_regiao’,
    ],
    ],

    ‘meta_query’ => [
    [
    ‘key’ => ‘estado’,
    ‘value’ => ‘SP’,
    ‘compare’ => ‘==’
    ],
    ]
    );

    $categories=get_categories($args);
    foreach($categories as $category) {
    echo ‘<option class=”level-0″ value=”‘. $category->name.'”>’. $category->name.’ (‘. $category->count . ‘)</option> ‘;
    }

    ?>

    @rcsouza se você está salvando os códigos DDD como taxonomia, então a melhor forma é que os códigos sejam child dos estados.

    — SP
    —- 11
    —- 12
    — MG
    —- 31
    —- 33

    etc…

    Assim quando você for usar o get_terms, você passa o ID do termo pai no argumento parent.

    Criador do tópico rcsouza

    (@rcsouza)

    Luiz, é uma boa ideia sim. Porém, além do DDD dentro do ESTADO eu tenho também a taxonomia município, que deverá aparecer somente a cidade daquele estado selecionado.

    Imagina um filtro todos com Caixa de seleção. Seria a ordem assim:

    Estado DDD Município Categoria

    — SP
    —- 11
    — São Paulo
    — Jundiaí
    —- 12
    — Guaratinguetá

    Teria que ser assim?

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • O tópico ‘Criando Filtro’ está fechado para novas respostas.