Add Search by Category Functionality to Your WordPress Site

Plugins

Allow your users to easily search within individual categories.

Add Search by Category Functionality to WordPress

If you have a site with a lot of content and a number of different categories, then there’s a good chance your visitors will want to search within certain categories and not others. The solution to this problem is to make your site searchable by individual categories.

Below is a way to manually do it.

Manually Expand the Functionality of Your Current Search Box

Another slightly more complicated method is to give your current search box “search by category” functionality. I found this trick at Deluxe Blog Tips.

Place the following code into the searchform.php file of your theme. (Appearance > Editor > Search Form – searchform.php) If your theme does not have a searchform.php file, you can create one:

<form id="searchform" method="get" action="<?php bloginfo('url'); ?>">
    <input type="text" name="s" id="s" size="15" />
    <?php wp_dropdown_categories('show_option_none=Select category'); ?>
    <input type="submit" value="Search" />
</form>

Then put this code at the bottom of your functions.php file. (Appearance > Editor > Theme Functions – functions.php):

add_action('pre_get_posts', 'search_by_cat');
function search_by_cat()
{
    global $wp_query;
    if (is_search()) {
        $cat = intval($_GET['cat']);
        $cat = ($cat > 0) ? $cat : '';
        $wp_query->query_vars['cat'] = $cat;
    }
}

And here’s the result:

One nice feature of this method is that when you are on the category page for a specific category, the search box will automatically switch to that category for more searches.

All the good WordPress stuff, once every two weeks

Subscribe

Leave a comment