I’m currently working on a search function in a wp site. The plan is to have a search function on the news page which just searches posts.
I’m achieving this by adding the below to my functions.php file:
/* search just posts */
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
which works fine. BUT. I also need to create a search on a custom post type listing – for just the custom posts and also one for the entire site to live on the 404 page.
Any ideas how to go about this greatly appreciated?
1 Answer
you can change your search filter to this:
function SearchFilter($query) {
$post_type = $_GET['post_type'];
if (!$post_type) {
$post_type="any";
}
if ($query->is_search) {
$query->set('post_type', $post_type);
};
return $query;
}
add_filter('pre_get_posts','SearchFilter');
then on your news search form add :
<input type="hidden" name="post_type" value="post" />
on your custom post type listing search form add
<input type="hidden" name="post_type" value="customtypename" />
and on the entire site search for don’t add anything
an you are set.