I’ve been stumped for days wondering why when I submit an empty string as a search term, it redirects to part of loop.php
where I have the following code inserted:
<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( !(have_posts()) && !(is_search()) ) : ?>
<h1 class="notfound-header"><?php _e( 'Not Found', 'twentyten' ); ?></h1>
<p class="notfound-content"><?php _e( 'Apologies, but no results were found.', 'twentyten' ); ?></p>
<?php elseif ( !(have_posts()) && (is_search()) ): ?>
<h1 class="notfound-header-search"><?php _e( 'Not Found Search', 'twentyten' ); ?></h1>
<p class="notfound-content-search"><?php _e( 'Apologies, but no results were found.', 'twentyten' ); ?></p>
<?php get_search_form(); ?>
<?php endif; ?>
I’m probably not including the is_search()
correctly. But I’m working on this site: http://www.cirkut.net/wp/libertyguide and I want to show the search form when nothing is submitted (i.e. just clicking search from the homepage).
Any ideas as to what to do? Thanks for any help!
I feel bad for answering my own question on here, but here’s what I did.
I created a custom search template, a custom
searchform.php
and changed myheader.php
to reflect my custom search page.What I did is rename the search box names to
search
instead ofs
to get around WordPress automatically runningsearch.php
and coming up with a 404 error (still not sure why it happened, probably my fault insearch.php
) and then used a new WP_Query while setting my arguments. While my solution does not provide anything more than a search term, it could be easily implemented to pull other key-value pairs into the arguments array.searchform.php
search-template.php snippet
So essentially
s
is nowsearch
to get around WordPress automatically usingsearch.php
.If anyone has any questions, feel free to post a comment.
When doing a search with an empty string, WordPress will not do a search and therefore your search page will not be used. Within the
$wp_query
, a parameter, simply nameds
, represents the search term. If it has a value of''
, WordPress does not direct this to the search page.As for how you can direct this to the empty search page, I am not sure. I know you could use
pre_get_posts
to set thes
parameter, but that is likely a very hacky/sloppy solution, so hopefully others will be able to help you out with that part.i found a decent/easy jquery workaround on http://wpengineer.com/2162/fix-empty-searches/, preventing submit if the field is empty:
And onload:
(This solution also shows an alert, but I prefer to disable it – and just keep focus on the search field…)