Não é segredo nenhum que o motor de pesquisa do WordPress é muito fraco. O grande problema disso é que o motor de pesquisa do WordPress faz uma busca literal pelas palavras que você escreve, o que significa que se você escrever duas ou três palavras-chave quando pesquisa, ele retorna todos os artigos que contenham essas palavras, mesmo que nenhum desses artigos tenha diretamente a ver com o assunto pesquisado. O grande problema disso é que normalmente os seus usuários nunca irão conseguir encontrar aquilo que procuram, pelo que teremos de melhorar o seu motor de pesquisa do WordPress.

Neste artigo, providenciamos 10 truques para usar no motor de pesquisa do WordPress, melhorando drasticamente uma série de aspectos relacionados com as pesquisas que seus usuários fazem internamente no seu blog. Experimente!

1. COMO EXCLUIR POSTS OU PÁGINAS DOS RESULTADOS DE PESQUISA

Se você gostaria de controlar quais os posts ou páginas que pretende excluir dos resultados de pesquisa do seu blog WordPress, a única coisa que necessita fazer é copiar e colar o seguinte código no ficheiro functions.php do seu template.

Neste truque de código, os artigos com os IDs 0 e 1 serão excluídos dos resultados de pesquisa. Se editar os IDs, poderá excluir aqueles que bem entender.

function SearchFilter($query) {
    if ($query->is_search) {
        $query->set('cat','0,1');
    }
    return $query;
}

add_filter('pre_get_posts','SearchFilter');

2. PESQUISA POR CATEGORIA COM DROP-DOWN

Uma função muito útil que você poderá colocar no motor de pesquisa do seu blog WordPress seria permitir aos seus leitores uma filtragem de resultados por categoria. Isso é bastante fácil de conseguir utilizando um drop-down que contenha os títulos de todas as categorias do seu blog.

A única coisa que necessita fazer é substituir o seu motor de pesquisa do WordPress (que pode ser encontrado no ficheiro search.php ou searchform.php) pelo seguinte código:

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
  <div>
    <label class="screen-reader-text" for="s">Pesquisar por:</label>
    <input type="text" value="" name="s" id="s" />
    in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>
    <input type="submit" id="searchsubmit" value="Search" />
  </div>
</form>

3. PESQUISAR DINAMICAMENTE CATEGORIAS E SUB-CATEGORIAS APENAS

Este truque de código pode ser extremamente interessante de incluir na sua página de arquivos para permitir aos seus leitores que realizem pesquisas diretamente nas sub-categorias de uma determinada categoria.

Neste truque de código, todas as sub-categorias da categoria com o ID 1 serão pesquisadas. Se editar o ID poderá especificar outra categoria que deseje.

<form method=”get” id=”searchform” action=”<?php bloginfo(‘home’); ?>/”>
<div id=”search”>
<input type=”text” value=”Search… ” onclick=”this.value=”;” name=”s” id=”s” />
<?php $categories = get_categories(‘child_of=1′);
$catlist = ”;
foreach ($categories as $cat) {
$catlist.= $cat->cat_ID.’,';
}
$catlist.’5′;
?>
<input type=”hidden” name=”cat” value=”<?php echo “$catlist”?>” />
<input name=”" type=”image” src=”<?php bloginfo(‘stylesheet_directory’); ?>/styles/<?php echo “$style_path”; ?>/search.gif” value=”Go” class=”btn” />
</div><!–/search –>
</form>

4. PESQUISAR UM TIPO DE ARTIGO ESPECÍFICO

O WordPress dá-lhe a possibilidade de pesquisar especificamente determinados tipos de artigos usando um pequeno truque de código.

A única coisa que necessita fazer é copiar e colar o seguinte código para dentro do ficheiro functions.php do seu template.

function SearchFilter($query) {
  if ($query->is_search) {
    // Insert the specific post type you want to search
    $query->set('post_type', 'feeds');
  }
  return $query;
}

// This filter will jump into the loop and arrange our results before they're returned
add_filter('pre_get_posts','SearchFilter');

5. MOSTRAR O NÚMERO DE RESULTADOS DE PESQUISA ENCONTRADOS

Se gostava de mostrar aos seus leitores quantos resultados foram encontrados por cada termo pesquisado, já poderá fazê-lo usando o seguinte truque.

Abra o ficheiro search.php do seu template e procure por este código:

<h2 class="pagetitle">Search Results</h2>

E substitua-o pelo novo código que temos para si:

<h2 class="pagetitle">Search Result for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>

6. DESTACAR OS TERMOS DE PESQUISA COM JQUERY

Para tornar os resultados de pesquisa um pouco mais claros para os seus leitores, você poderá usar o seguinte truque, o qual destaca visualmente os termos pesquisados nos resultados gerados pela pesquisa.

Copie e cole o seguinte código diretamente no ficheiro functions.php do seu template:

function hls_set_query() {
  $query  = attribute_escape(get_search_query());

  if(strlen($query) > 0){
    echo '
      <script type="text/javascript">
        var hls_query  = "'.$query.'";
      </script>
    ';
  }
}

function hls_init_jquery() {
  wp_enqueue_script('jquery');
}

add_action('init', 'hls_init_jquery');
add_action('wp_print_scripts', 'hls_set_query');

E depois copie e cole o seguinte código no ficheiro header.php antes da tag /head:

<style type="text/css" media="screen">
    .hls { background: #D3E18A; }
  </style>
  <script type="text/javascript">
  jQuery.fn.extend({
    highlight: function(search, insensitive, hls_class){
      var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");
      return this.html(this.html().replace(regex, function(a, b, c){
        return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";
      }));
    }
  });
  jQuery(document).ready(function($){
    if(typeof(hls_query) != 'undefined'){
      $("#post-area").highlight(hls_query, 1, "hls");
    }
  });
  </script>

7. DESLIGAR A PESQUISA DO WORDPRESS

Se está à procura de uma forma de desligar toda a funcionalidade de pesquisa do seu blog WordPress, então este truque é para si.

A única coisa que tem de fazer é copiar e colar o seguinte código no ficheiro functions.php do seu template.

function fb_filter_query( $query, $error = true ) {

	if ( is_search() ) {
		$query->is_search = false;
		$query->query_vars[s] = false;
		$query->query[s] = false;

		// to error
		if ( $error == true )
			$query->is_404 = true;
	}
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

8. TORNE OS RESULTADOS DE PESQUISA ILIMITADOS

Por vezes você poderá desejar que os resultados de pesquisa do seu blog WordPress não estejam limitados pelo ciclo do próprio WordPress. Este truque permite-lhe tornar os resultados de pesquisa do seu blog completamente ilimitados.

No ficheiro search.php você poderá adicionar o código seguinte e por cima do ciclo.

Antes de tudo, encontre o seguinte código no seu ficheiro search.php:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

E depois adicione o seguinte código:

<?php $posts=query_posts($query_string . '&posts_per_page=-1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

9. USE UMA BARRA DE PESQUISA PERSONALIZADA DO GOOGLE

Outra solução interessante é você substituir a barra de pesquisa do seu blog WordPress por uma pesquisa personalizada da Google, de preferência ligada ao Adsense para que você possa ganhar dinheiro sempre que um dos seus leitores clica num anúncio dos resultados. Se não sabe como criar uma barra de pesquisa deste tipo, leia o seguinte tutorial: Como criar uma barra de pesquisa Google personalizada.

10. ADICIONE UM CAMPO DE PESQUISA AO SEU MENU

Alguma vez desejou adicionar um campo de pesquisa automaticamente ao menu do seu blog WordPress 3.0+?

Abra o seu ficheiro functions.php, e cole lá dentro o seguinte código. O seu campo de pesquisa irá aparecer quando guardar as alterações.

add_filter('wp_nav_menu_items','add_search_box', 10, 2);
function add_search_box($items, $args) {

        ob_start();
        get_search_form();
        $searchform = ob_get_contents();
        ob_end_clean();

        $items .= '<li>' . $searchform . '</li>';

    return $items;
}

Até já e bons truques!

Fonte

Autor: Paulo Faustino

Blog do Autor | Artigos do Autor:

Fundador da Escola Dinheiro. É um empreendedor e blogueiro que dedica a sua vida à produção e partilha de conteúdos de grande qualidade, contando já com alguns dos mais reconhecidos blogs de Portugal e do Brasil.

Templates Wordpress que Recomendamos:

  • U-Design WordPress Theme
  • Tersus - Responsive WordPress Theme
  • Modernize - Flexibility of Wordpress
  • Good Space - Responsive Minimal WP Theme
  • Sterling - Responsive Wordpress Theme
  • Karma - Clean and Modern Wordpress Theme
  • Doover Premium WordPress Theme
  • MayaShop - A Flexible Responsive e-Commerce Theme
  • SmartStart WP - Responsive HTML5 Theme
  • Striking Premium Corporate & Portfolio WP Theme
  • Core Minimalist Photography Portfolio
  • King Size - fullscreen background WordPress theme

Gostou deste artigo? Então torne-se fã do Blog no Facebook!


WooThemes - WordPress themes for everyone

Comentários dos Alunos


  1. Alguém conhece um plugin ou uma forma de criar um campo de pesquisa avançada no WP?
    Exemplo: Criar um campo de pesquisa através de categorias e subcategorias, como geralmente existe em site de imóveis e revenda de carros.
    Vejam um exemplo nesse link: http://www.socarrao.com.br/curitiba-regiao/busca-avancada

    Responder


  2. ricardo
    15.01.2011

    Outra opção bem mais simples é incluir uma busca personalizada do Google no site.
    Achei extremamente útil as dicas, realmente a busca do WordPress não é uma das opções mais elaboradas.

    Responder


  3. Beto Default
    25.01.2011

    A dica do jQuery que ressalta as palavras buscadas, inserindo a marcação de negrito é ótima, esta dica irei usar , obrigado e parabéns Paulo :)

    Responder


  4. Leandro
    05.04.2011

    Show!!! suas dicas parceiro. Usei particularmente a descrita no código abaixo, mas preciso de mais dois detalhes nesse exemplo, tal qual não consegui encontrar nenhuma referência na net.

    Uma delas seria incluir um combo box para selecionar por exemplo uma busca baseada nas tag de post e outra para selecionar com um intervalo de datas.

    Teria como me ajudar nesse missão? Grato.

    Código usado

    <form role="search" method="get" id="searchform" action="”>

    Pesquisar por:

    in

    Responder


  5. Tomé M.
    03.05.2011

    Boas,

    Quero usar a dica 10, mas estão a surgir uns pequenos contra-tempos. No meu Site tenho 2 Barras de Menu, e quando coloco esse código ele coloca-me a “searchbox” em ambas as barras. Eu só queria colocar na inferior.

    Alguém me sabe ajudar?

    Responder


  6. Antonio Carlos
    12.06.2011

    Fiz o mostrado em 2. PESQUISA POR CATEGORIA COM DROP-DOWN. localmente funcinou direitinho. mas quando envio para o servidor não funciona. se eu busco somente digitando o valor funciona mas se eu selecionar a categoria no menu drop-down lista todos os itens da categoria selecionada quando dou buscar. alem disso localmente quando faço a busca na barra de endereços mostra algo como cat=valor já no servidor fica category/nomedopost. não entendi, tenho as páginas searchform.php com o formulário e o search.php para listar os resultados, localmente legal, no servidor nada de funcionar…

    Responder


  7. Dayvson
    24.10.2011

    Ótimo Post.

    Muito fácil de implementar a procura com restrição de categorias.
    Obrigado

    Abraços

    Responder


  8. Fabiano
    09.12.2011

    Preciso do código 2 mas que no dropdown só apareça as subcategorias de uma determinada categoria, alguém pode me ajudar?

    Responder


  9. Gabeatles
    23.02.2012

    Cara muito bom o artigo, alias o site esta de parabens me salvando de varias.
    Bom eu estou usando um plugin de endereços que mostra em uma pagina o negocio é que a busca padrao do WP nao busca nessa tabela, queria saber como adiciono essa tabela do banco para aparecer no resultado tambem? nao sei porque nao esta funcionando.

    abracos e valew de novo

    Responder


  10. Daniel Silva
    21.05.2012

    Preciso refinar a busca, por ao exemplo ao digitar gas aparecem palavras com gas no meio como bisnasgas gastos etc… como fazer para a buscar apenas a palavra que quero?

    Responder

Comente o Artigo!

RSS
Twitter
Facebook
Comentários
ASSINANTES
SEGUIDORES
FÃS
COMENTÁRIOS
11485

Subscrever Newsletter
Subscreva a Newsletter:


Elegant Themes

Wix

Theme Forest

Mojo Themes



Assine a Escola Wordpress Assine a Newsletter da Escola Wordpress Escola Wordpress no Twitter Escola Wordpress no Facebook Escola Wordpress no Youtube Escola Wordpress no Google Buzz