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!
3 Answers
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 my header.php
to reflect my custom search page.
What I did is rename the search box names to search
instead of s
to get around WordPress automatically running search.php
and coming up with a 404 error (still not sure why it happened, probably my fault in search.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
<div class="search">
<form method="get" class="search-form" id="search-form" action="<?php bloginfo( 'url' ); ?>/search/">
<div>
<input class="search-text" type="text" name="search" id="search-text" value="Search this site" />
<input class="search-submit" type="submit" name="submit" id="search-submit" value="Search" />
</div>
</form>
</div>
search-template.php snippet
$s = wp_specialchars(stripslashes($_GET["search"]), 1);
$search_query = array(
's' => $s
);
$search = new WP_Query($search_query);
So essentially s
is now search
to get around WordPress automatically using search.php
.
If anyone has any questions, feel free to post a comment.