Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a search field for the blog posts, but I need an other for a custom post type. How can I create this custom search form with a different search result layout?

share|improve this question

2 Answers 2

Here is what I've tried and got a solution with 3 steps.
let's say your custom post type is "products"

1 . Add Function Codes
here you can specify the archive-search.php

 function template_chooser($template)   
  global $wp_query;   
  $post_type = get_query_var('post_type');   
  if( $wp_query->is_search && $post_type == 'products' )   
    return locate_template('archive-search.php');  //  redirect to archive-search.php
  return $template;   
add_filter('template_include', 'template_chooser');    

2 . create search result template for custom post type ( search-archive.php )

        /* Template Name: Custom Search */        
        get_header(); ?>             
        <div class="contentarea">
            <div id="content" class="content_right">  
                     <h3>Search Result for : <?php echo "$s"; ?> </h3>       
                     <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>    
                <div id="post-<?php the_ID(); ?>" class="posts">        
                    <h4><a href="<?php the_permalink(); title="<?php the_title();     ?>"><?php the_title(); ?></a><h4>        
                    <p><?php the_exerpt(); ?></p>        
                    <p align="right"><a href="<?php the_permalink(); ?>">Read     More</a></p>    
                    <span class="post-meta"> Post By <?php the_author(); ?>    
                     | Date : <?php echo date('j F Y'); ?></span>    

                    </article><!-- #post -->    

           </div><!-- content -->    
        </div><!-- contentarea -->   
        <?php get_sidebar(); ?>
        <?php get_footer(); ?>
  1. Build Search Form
    In this Search Form the value "products" is hidden and it will search only product posts.

        <h3>Search Products</h3>
        <form role="search" action="<?php echo site_url('/'); ?>" method="get" id="searchform">
        <input type="text" name="s" placeholder="Search Products"/>
        <input type="hidden" name="post_type" value="products" /> <!-- // hidden 'products' value -->
        <input type="submit" alt="Search" value="Search" />

for more I would like to link you to here

share|improve this answer

I tried this method, but when I post the form with empty input I get a list with all posts but with the index.php template, and not with archive-search.php. How can I fix that?

share|improve this answer
yes, its true, same problem for me –  robert Mar 13 '13 at 19:02

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.