Change loop.php for empty search customization

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
3

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.

Leave a Comment