Suporte » Desenvolvendo com WordPress » Filtrar busca com custom fields

  • Galera, tem uma semana que to procurando e estudando e ainda não consegui, como sou fraco em php, aí vai!

    Meus usuários tem vários campos adicionais nos perfis, um deles é um select de “Categoria profissional”. Eu preciso criar 4 checkboxes com os valores desse custom field “Categoria profissional” e usá-los como filtro na busca por profissionais.

    Eu já uso o Relevanssi Premium pra indexar os usuários e custom fields.
    Já fiz ele restringir qualquer busca para apenas usuários e os acfs.

    Exemplo do funcionamento que eu estou tentando criar:

    O usuário busca por “Rangel” e marca o checkbox “Produtor” ( que é um dos valores do custom field chamado Categoria Profissional )

    Ele deverá retornar somente os usuários que tiverem a opção “Produtor” do acf Categoria Profissional e que chame Rangel ou que tenha essa palavra chave em qualquer outro lugar do perfil, até na bios.

    Alguém tem ideia do que fazer?

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • Moderador Leo Baiano

    (@leobaiano)

    Como você está fazendo para que a busca retorne os usuários e não os posts? Pergunto isso porque a solução vai depender um pouco de como está sendo feita a busca. Por exemplo, se a busca fosse com o loop padrão e nos posts você poderia usar meta_key e meta_value para retornar apenas posts cujo custom field X tenha o valor Y.

    Da uma olhada: https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

    Eu usei o Relevanssi pra substituir a busca normal do WP e mandei ele indexar somente usuários e custom fields.

    Acho que o meu loop não é bem padrão. Desculpa pela bagunça do código, mas isso aí é o melhor frankenstein q eu consegui montar hehe.

    <?php
    
        $number = 20;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $offset = ($paged - 1) * $number;
        $users = get_users();
        $total_users = count($users);
        $query = get_users('orderby=rand&offset='.$offset.'&number='.$number);
        $total_pages = intval($total_users / $number) + 1;  
    
    foreach($query as $user) {
        $image = $user->imagem_do_perfil;
        $foto =  wp_get_attachment_image_src( $image, full );
        $slug = '/profissional/'.$user->user_login;
        ?>

    Aqui vem o objeto do loop
    e depois eu fecho com

    <?php
    }
    	if ($total_users > $total_query) {
        echo '<div id="pagination" class="clearfix">';
        //echo '<span class="pages">Pages:</span>';
        $current_page = max(1, get_query_var('paged'));
        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => 'page/%#%/',
            'current' => $current_page,
            'total' => $total_pages,
            'show_all'           => true,
            'prev_text'          => ('« Previous'),
    	    'next_text'          =>    ('Next »'),
            'prev_next'    => false,
            'type'         => 'list',
        ));
        echo '</div>';
    }
    ?>

    Isso me retorna todos os usuários.

    Olá, alguém sabe se tem um plugin que cadastre e depois tenha a possibilidade de pesquisar igual ao deste site:

    ALESP

    Desde já agradeço.

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • O tópico ‘Filtrar busca com custom fields’ está fechado para novas respostas.