6

I'm just trying to find a way to narrow my current search bar so that it only searches within my 'events' custom post-type.

I do not want the search to index any other post type, only 'events'.

Here's the search bar:

<form id="searchform" action="http://localhost:8888/ltc" method="get">
        <input class="inlineSearch" type="text" name="s" value="Enter a keyword" onblur="if (this.value == '') {this.value = 'Enter a keyword';}" onfocus="if (this.value == 'Enter a keyword') {this.value = '';}" />
        <input class="inlineSubmit" id="searchsubmit" type="submit" alt="Search" value="Search" />
    </form>

And the search.php:

<?php if ( have_posts() ) : ?>
            <h1><?php printf( __( 'Search Results for: %s', 'twentyten' ), '' . get_search_query() . '' ); ?></h1>
            <?php
            /* Run the loop for the search to output the results.
             * If you want to overload this in a child theme then include a file
             * called loop-search.php and that will be used instead.
             */
             get_template_part( 'loop', 'search' );
            ?>

(I haven't actually edited the default search.php page yet, as I just want to get the indexing correct first)

Thanks

2

3 Answers 3

13

To search for a custom post type , you can add to the query &post_type=events , to achieve this just edit your form like this

<form id="searchform" action="http://localhost:8888/ltc" method="get">
        <input class="inlineSearch" type="text" name="s" value="Enter a keyword" onblur="if (this.value == '') {this.value = 'Enter a keyword';}" onfocus="if (this.value == 'Enter a keyword') {this.value = '';}" />
        <input type="hidden" name="post_type" value="events" />
        <input class="inlineSubmit" id="searchsubmit" type="submit" alt="Search" value="Search" />
</form>

You can do this for any post type (needs to be an existent one or will be discarded) and will work just fine

1
  • 4
    How would this work for multiple post_types?
    – kneidels
    Commented Feb 29, 2016 at 11:37
1

In my case, the search functionality was working perfectly. I just needed to filter out the query to search only for the Learndash Courses post type. Here's what I did:

// Filters the search query to only include 'sfwd-courses' post type
function fn_search_courses_only($query) {
    if( $query->is_search && ! is_admin() ) {
        $query->set( 'post_type', 'sfwd-courses' );
    }
}
add_action( 'pre_get_posts', 'fn_search_courses_only' );
0

To search for a custom post, you just have to put the post type in the value section.
ex: My Custom post type is "blogpst". Now see what i did actually in the second input field

<input type="hidden" name="post_type" value="blogpst" />

See, What i have did. I just put the post type in value section.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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