Blog-WordPress Tips, Tricks & Other Tutorial

How to create a custom search for custom post type?

posted by Solaiman in Tips And Tricks, Wordpress

let’s say your custom post type is “products

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

Add this below code on your functions.php file

 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 )

 <?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">        
                     <article>        
                    <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>    

           </div><!-- content -->    
        </div><!-- contentarea -->   
        <?php get_sidebar(); ?>
        <?php get_footer(); ?>

3 Build Search Form
In this Search Form the value “products”  is hidden and it will search only product posts.

 <div>   
    <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" />
  </form>
 </div>

 

The following two tabs change content below.

Solaiman

CEO & Co-Founder at WebDGallery
I am very sincere and an expert programmer with great communication skills and great web development skills. After 3 years of experience, I am expert in Wordpress themes Development,PSD to HTML, HTML to WordPress, Responsive Web Design, etc.

Leave a Comment

Menu

Click to close sidebar.