2

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?

4

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.

  • So I use the value of the hidden field to deterine the post type? like: <input type="hidden" name="post_type" value="post" /> <input type="hidden" name="post_type" value="custom" /> Just wanted to clarify as your examples above are the same? Looks good though! :) Thanks Andy – tbwcf Feb 25 '11 at 12:07
  • @tbwcf that's correct, i'll update the code when i get back home – Bainternet Feb 25 '11 at 12:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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