WordPress Custom Search by post_type

I’ve tried a couple of methods but I cannot seem to filter custom post_types from my search results and was hoping someone could help.

I have installed “Job Manager” and created 4 jobs which have a custom post_type = 'jobman_job'

Read More

I tried to create a manual search form and set a hidden value of post_type = jobman_job but it still returned all posts.

<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<input type="text" name="s" id="s" value=""/>
<input type="hidden" name="post_type" value="jobman_job" />
<input type="submit" id="searchsubmit" value="Search" />
</form>

I then tried creating a custom search page and redirecting the search to this page as follows (i.e added page_id hidden field):

<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<input type="text" name="s" id="s" value=""/>
<input type="hidden" name="page_id" value="123" />
<input type="hidden" name="post_type" value="jobman_job" />
<input type="submit" id="searchsubmit" value="Search" />
</form>

And then in the custom search page, I added the following code (as per wordpress guide – http://codex.wordpress.org/Creating_a_Search_Page) and I added the post_type of jobman_job to the query array:

global $query_string;

$query_args = explode("&", $query_string);
$search_query = array('post_type' => 'jobman_job');

foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach

$search = new WP_Query($search_query);

And it still displays all posts…

What am I doing wrong? I have checked the post_type column in the wp_posts table and I have 4 unique entries…so they are there…

Any Insight?

Related posts

Leave a Reply

1 comment

  1. NOT TESTED!

    function mySearchFilter($query) {
    $post_type = $_GET['type'];
    if (!$post_type) {
        $post_type = 'jobman_job';
    }
    if ($query->is_search) {
        $query->set('post_type', $post_type);
    };
    return $query;
    };
    
     add_filter('pre_get_posts','mySearchFilter');