Suporte » Desenvolvendo com WordPress » Campo de Pesquisa para Post Types

  • Resolvido Marcio

    (@marcionugas)


    Boa tarde.
    Estou criando um campo de busca customizada no WordPress e não sei porque esta buscando apenas um resultado nos meus post_types. Independente do resultado que eu colocar, como por exemplo, a pesquisa “teste”, tenho vários post de Teste, ele só me busca um.

    Segue abaixo códigos:

    functions.php
    function cpt_busca($query) {
    if ($query->is_search) {
    $query->set(‘post_type’, array(‘video_relatorios’ , ‘campanha_politica’, ‘musicas_videoclipes’, ‘festinhas_eventos’, ‘video_marketing’, ‘video_case’, ‘videos_animados’, ‘apresentacao’, ‘depoimentos’, ‘clientes’, ‘videos_institucionai’, ‘doc’, ‘videos_publicitarios’));
    };
    return $query;
    };
    add_filter(‘pre_get_posts’, ‘cpt_busca’);

    searchform.php
    <form method=”get” id=”searchform” action=”<?php echo home_url(); ?>/”>
    <input type=”text” placeholder=”O que você procura?” name=”s” id=”s” value=”<?php the_search_query(); ?>”/>
    <button class=”btn btn-lg btn-site” type=”submit” id=”searchsubmit”><span class=”glyphicon glyphicon-search”></span> Pesquisar</button>
    </form>

    search.php

    <?php if (have_posts()) : ?>
    <div class=”row” id=”titulo-servico-selecionado”>
    <div class=”container borda”>
    <h2>Resultados da busca por: <?php the_search_query(); ?></h2>
    </div>
    </div>

    <div class=”row hidden-xs” id=”cards-video-servicos”>

    <?php
    $count = 0;
    while (have_posts()) : the_post(); ?>

    <div class=”col-md-12 col-sm-12 col-xs-12 portfolio”>
    ” data-toggle=”modal” data-target=”#myModal<?php echo $count;?>”>” class=”img-responsive” alt=”<?php the_title();?>” title=”<?php the_title();?>”/>
    <div class=”container”>
    <h2>” data-toggle=”modal” data-target=”#myModal<?php echo $count;?>”><?php the_title();?></h2>
    </div>
    <div class=”modal fade” id=”myModal<?php echo $count;?>” tabindex=”-1″ role=”dialog” aria-labelledby=”myModalLabel”>
    <div class=”modal-dialog modal-lg” role=”document”>
    <div class=”modal-content”>
    <div class=”modal-header”>
    <button type=”button” class=”close” data-dismiss=”modal” aria-label=”Close”><span aria-hidden=”true”>×</span></button>
    <h4 class=”modal-title” id=”myModalLabel”><?php the_title();?></h4>
    </div>
    <div class=”modal-body”>
    <div class=”embed-responsive embed-responsive-16by9″>
    <iframe class=”embed-responsive-item” src=”<?php the_permalink();?>”></iframe>
    </div>
    <p><?php the_content();?></p>
    </div>
    <div class=”modal-footer”>
    <button type=”button” class=”btn btn-default” data-dismiss=”modal”>Fechar</button>
    </div>
    </div>
    </div>
    </div>
    </div>
    <?php $count++ ;?>
    <?php endwhile;
    ?>
    </div>
    <?php else:?>
    <div class=”row” id=”paginacao-servico-selecionado”>
    <div class=”container” style=”border: 5px solid #000; padding-top: 5%; padding-bottom: 5%; margin-top: 3%;”>
    <div class=”col-md-12 text-center”>
    <h2>Nenhum resultados encontrado para a busca por: <?php the_search_query(); ?></h2>
    </div>
    </div>
    </div>
    <?php endif; ?>

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • @marcionugas Você não precisa retornar a variável $query na função. Remova a linha return $query; e veja se funciona.

    Criador do tópico Marcio

    (@marcionugas)

    Eu fiz e não deu certo.
    Continua pegando somente um resultado.

    function cpt_busca($query) {
    if ($query->is_search) {
    $query->set(‘post_type’, array(‘video_relatorios’ , ‘campanha_politica’, ‘musicas_videoclipes’, ‘festinhas_eventos’, ‘video_marketing’, ‘video_case’, ‘videos_animados’, ‘apresentacao’, ‘depoimentos’, ‘clientes’, ‘videos_institucionai’, ‘doc’, ‘videos_publicitarios’));
    };
    };
    add_filter(‘pre_get_posts’, ‘cpt_busca’);

    Ele ta usando o “=”do Mysqli e não o “like”.

    Criador do tópico Marcio

    (@marcionugas)

    Resolvido.
    No arquivo search.php adicionei os seguintes comandos:
    $posts=query_posts($query_string . ‘&posts_per_page=-1’);
    if (have_posts()) :
    while (have_posts()) : the_post();

    Agora vingo!

    Evite usar query_post(). Inclua $query->set( 'posts_per_page', -1 ); na sua função cpt_busca e veja se resolve.

    Criador do tópico Marcio

    (@marcionugas)

    ok.
    Inseri.
    Era só isso que faltava.
    Muito obrigado.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Campo de Pesquisa para Post Types’ está fechado para novas respostas.