A função de pesquisa padrão, se o formulário de pesquisa estiver vazio, retorna a página inicial. Desejo que ele retorne uma página "desculpe, sua pesquisa não retornou resultados".
e esse tíquete me diz que deve funcionar dessa maneira! Alguém descobriu como alterá-lo além de usar um redirecionamento .htaccess?
Estou usando o seguinte arquivo search.php: `
<div id="content" class="clearfix">
<div id="main" class="col700 left clearfix" role="main">
<h1 class="archive_title"><span>Search Results for:</span> <?php echo esc_attr(get_search_query()); ?></h1>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?>>
<header>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<p class="meta"><?php _e("Posted", "bonestheme"); ?> <time datetime="<?php echo the_time('Y-m-j'); ?>" pubdate><?php the_time('F jS, Y'); ?></time> <?php _e("by", "bonestheme"); ?> <?php the_author_posts_link(); ?> <span class="amp">&</span> <?php _e("filed under", "bonestheme"); ?> <?php the_category(', '); ?>.</p>
</header> <!-- end article header -->
<section class="post_content">
<?php the_excerpt('<span class="read-more">Read more on "'.the_title('', '', false).'" »</span>'); ?>
</section> <!-- end article section -->
<footer>
</footer> <!-- end article footer -->
</article> <!-- end article -->
<?php endwhile; ?>
<?php if (function_exists('page_navi')) { // if expirimental feature is active ?>
<?php page_navi(); // use the page navi function ?>
<?php } else { // if it is disabled, display regular wp prev & next links ?>
<nav class="wp-prev-next">
<ul class="clearfix">
<li class="prev-link"><?php next_posts_link(_e('« Older Entries', "bonestheme")) ?></li>
<li class="next-link"><?php previous_posts_link(_e('Newer Entries »', "bonestheme")) ?></li>
</ul>
</nav>
<?php } ?>
<?php else : ?>
<!-- this area shows up if there are no results -->
<article id="post-not-found">
<header>
<h1>No Results Found</h1>
</header>
<section class="post_content">
<p>Sorry, but the requested resource was not found on this site.</p>
</section>
<footer>
</footer>
</article>
<?php endif; ?>
</div> <!-- end #main -->
<div id="sidebar1" class="sidebar right col220">
<?php get_search_form(); ?>
</div>
</div> <!-- end #content -->
`
Respostas:
Aqui estão três maneiras de corrigir isso. Recomendamos que você use a solução 2, mas preste atenção ao jQuery na solução 1 como uma maneira de evitar a situação em primeiro lugar.
Para aqueles que desejam mais código publicado a partir do tema de perguntas, não se trata de um tema, é um problema geral do WordPress que afeta todos os sites do WordPress.
Solução 1
Você pode encontrar um tutorial detalhado sobre como corrigir isso aqui:
http://wpengineer.com/2162/fix-empty-searches/
Solução 2 (recomendado)
Publicada por Spitzerg http://wordpress.org/support/topic/blank-search-sends-you-to-the-homepage
Solução 3
http://www.warpconduit.net/2011/08/02/fix-redirection-and-error-page-on-empty-wordpress-search/
Semelhante à solução 2, mas não tão extensa e ligeiramente diferente.
fonte
Crie um Page Search.php e cole esse código e altere seu loop com "get_template_part ('loop', 'search');
fonte
Com base na solução 2 de Tom, mas garantindo que nenhuma postagem seja retornada, adicione um filtro de solicitação como antes:
Mas desta vez, defina uma variável global para dizer que nenhum resultado da pesquisa deve ser retornado. Em seguida, usando um gancho posts_where, verifique se nenhuma postagem foi retornada:
fonte
Verifique se a consulta de pesquisa está vazia ( get_search_query () ), basta substituir o primeiro IF por isso:
fonte
Trato disso nos meus temas da seguinte maneira. Tente usar este código:
Estamos lidando com a condição if (! Have_posts ()). Coloque-o logo após o título h3.archive, antes de se iniciar (have_posts). Você pode até chamar a função de formulário de pesquisa na área de conteúdo.
fonte
Eu também enfrentei o mesmo problema, é o padrão dado pelo wordpress.
mas felizmente encontrei algo que me ajudou.
Adicione abaixo em "Functions.php"
e depois substitua a linha abaixo (linha 15) em search.php
Pode ser que também o ajude
Para mais detalhes, leia o seguinte: Personalize o wordpress de pesquisa vazia
fonte
Uma maneira de evitar a pesquisa vazia é executar a verificação javascript do valor vazio do campo de pesquisa e, se o campo encontrado estiver vazio, pare de enviar o formulário de pesquisa como abaixo:
fonte
fonte