WordPress: Search Custom Post Type(s)

I’ll admit, the default WordPress search engine is not the most robust. However, there are a few ways to customize it. One of the most common requests is, “How do you limit a WordPress search to a custom post type?” Below, I explain how to display results for one post type, as well as multiple custom post types.

Limit WordPress Search Results to 1 Custom Post Type

If all you want to do is limit your WordPress search to a single custom post type, add the following line of code inside the <form> on your searchform.php template.

<input type="hidden" name="post_type" value="your-posttype-here" />

Depending on how you have customized your searchform.php template, it should look something like this:

<form id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
	<input type="hidden" name="post_type" value="your-posttype-here" />
	<label class="assistive-text" for="s">Search</label>
	<input id="s" class="field" type="text" name="s" />
	<input id="searchsubmit" class="submit" type="submit" name="submit" value="Search" />

Limit WordPress Search Results to Multiple Custom Post Types

If you want to limit your search to more than one custom post type, you have to go about it a slightly different way.

Add the following lines of code in the same place in your searchform.php file:

<input type="hidden" name="post_type[]" value="post_type_one" />
<input type="hidden" name="post_type[]" value="post_type_two" />

Replace post_type_one and post_type_two with the name of your custom post type.

This works mainly because WordPress’ WP_Query object can handle the post_type parameter as an array.

Thanks to John Sparrow for this code snippet.

What Are Your Thoughts?

All fields are required. Your email will not be published.

You can use standard <code> and <pre> tags to post code examples, or a service like codepen.io.