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.

So I have a section on my site that specifically searches a custom post type for YouTube videos. I'm absolutely able to search the custom type. However, I'm unsure how to create a search page that has custom formatting geared toward this type of search.

I've created a custom loop-youtube.php and modified within search.php get_template_part( 'loop'); to get_template_part( 'loop', 'youtube'); however, it affects the search results globally.

Is there a way to create a custom search.php page for a specific post_type?

Thanks for any help.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

How are you restricting the search to your custom post type? If you are doing it by passing an additional argument, i.e. &type=myCustomPostType, you could use a conditional test, like:

if(isset($_GET['type'] && $_GET['type'] == 'myCustomPostType')):
  get_template_part('loop','youtube');
else:
 get_template_part(loop);
endif;
share|improve this answer
    
I added a search filter in functions.php then I added a hidden query to the form <input type="hidden" name="post_type" value="youtube" /> to the form. –  Zach Shallbetter Mar 3 '11 at 21:56
    
Then change what i did above to only test for $_GET['post_type'] == 'youtube' and i think that should do it. Now, I'm also assuming that you're either using a dedicated form just for searching youtube post types or doing some kind of test before applying the search filter. If not that filter will also affect search results globally. –  starepod Mar 4 '11 at 0:46
    
I seem to be getting a syntax error on the first line..I fixed the semi colon at the end..still getting the same error. if(isset($_GET['type'] && $_GET['post_type'] == 'youtube')); –  Zach Shallbetter Mar 4 '11 at 15:06
    
if(isset($_GET['type']) && $_GET['post_type'] == 'youtube'): I didn't close the isset function. The colon should be a colon, not a semicolon. It works just like the brackets if{ } else { } do. –  starepod Mar 4 '11 at 23:24

I have my search page split up like this:

<?php if ($wp_query->query_vars['post_type'] == 'post') { 
 // output for posts format
} else {
 // output for other formats
} ?>

I think query_vars is more efficient than $_GET in this case.

share|improve this answer

Your Answer

 
discard

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.