1
resposta

filtro por subcategoria e sem botão

Queria saber como poderia fazer no caso do filtro ser uma lista das subcategorias em forma inline, sem o dropdown, e ao clicar sobre o nome, filtrar automaticamente, sem a necessidade do clique do botão "filtrar". Se puderem, por favor, me ajudar. Tentei fazer, mas não funcionou.

1 resposta

Uma forma de fazer isso seria a seguinte, atualmente a index está da seguinte forma:

Dropdown

<?php $taxonomias = get_terms('localizacao'); ?>
<form class="busca-localizacao-form" action="<?= bloginfo('url'); ?>">
    <div class="taxonomy-select-wrapper">
    <select name="taxonomy">
    <option value="">Todos os imóveis</option>
           <?php foreach($taxonomias as $taxonomia) { ?>
            <option value="<?= $taxonomia->slug; ?>"><?= $taxonomia->name; ?></option>
            <?php } ?>
    </select>
    </div>
    <button type="submit">Filtrar</button>
</form>

Programação

$queryTaxonomy = array_key_exists('taxonomy', $_GET);
if($queryTaxonomy) { 
            $taxQuery = array(
                array(
                    'taxonomy' => 'localizacao',
                    'field' => 'slug',
                    'terms' =>$_GET['taxonomy']
                    )
            );
        }
$args = array(
        'post_type' => 'imovel',
        'tax_query' => $taxQuery,
        'posts_per_page' => 3
        );
        //$args = array('post_type' => 'imovel');
        $loop = new WP_Query($args);
while($loop->have_posts() ) {
    //Resto do codigo omitido
}

Para fazer em lista, basta fazer isso aqui:

<?php $taxonomias = get_terms('localizacao'); ?>
<?php foreach($taxonomias as $taxonomia) { ?>
            <a href="<?= bloginfo('url'); ?>/?taxonomy=<?= $taxonomia->slug; ?>"><?= $taxonomia->name; ?></a><br/>
            <?php } ?>

Caso o seu Wordpress esteja configurado para trabalhar com links no formato de nome do post (admin - menu configurações - links permanentes - nome do post), você pode tentar criar uma página somente para a taxonomia de localização. Um exemplo simples:

arquivo taxonomy-localizacao

<?php
require_once('header.php');
$cidade = get_query_var('term');
?>
<main class="home-main">
    <div class="container">


    <h1>Bem Vindo ao Maluras!</h1>
        <ul class="imoveis-listagem">


        <?php 

        if($cidade) { 
            $taxQuery = array(
                array(
                    'taxonomy' => 'localizacao',
                    'field' => 'slug',
                    'terms' =>$cidade
                    )
            );
        }

        $args = array(
        'post_type' => 'imovel',
        'tax_query' => $taxQuery
        );


        $loop = new WP_Query($args);

            if($loop->have_posts() ) { 
                 while($loop->have_posts() ) {
                    $loop->the_post(); 

        ?>

                <li class="imoveis-listagem-item">
                    <a href="<?php the_permalink(); ?>">
                        <?php the_post_thumbnail(); ?><h2><?php the_title(); ?></h2>
                        <p><?php the_content(); ?></p>
                    </a>
                </li>

            <?php 
                }
            }
            ?>
        </ul>

    </div>
</main>

<?php get_footer(); ?>

Desta forma, você vai conseguir acessar os imoveis de uma determinada cidade desta forma (exemplo)

http://ENDERECO_DO_SEU_SITE_WORDPRESS/localizacao/rio-de-janeiro/

Neste caso, a lista de taxonomias ficaria da seguinte forma:

<?php $taxonomias = get_terms('localizacao'); ?>
<?php foreach($taxonomias as $taxonomia) { ?>
            <a href="<?= bloginfo('url'); ?>/localizacao/<?= $taxonomia->slug; ?>"><?= $taxonomia->name; ?></a><br/>
            <?php } ?>