Search functionality – include date, category and author search

By default, the WordPress search gives an omni-like search facility to WP Posts and Pages that should search any built-in WP content. This can be further extended through a plugin such as Relevanssi.

You can though, if I’m understanding you correctly, create a custom search form where you can dictate the fields available to search on.

You would do this first of all by creating a new file in your theme’s root titled something like mysearch-searchform.php. This is just a HTML form, so whatever you put in will work in theory. The one must that I’m aware of is a hidden field to tell WP what post type you want to search within. So you’d use something like:

<input type="hidden" name="search" value="mycpt">

To search for news posts only. So, you now have your custom search form, which you can call in your theme by using:

<?php get_template_part( 'mycpt', 'searchform' ); ?>

So, you have your custom form, and it’s outputting onto your page. Now you need to deal with the results. For that you will look to your functions.php where I use the below function to tell WP what results file to load depending on the search form used:

function load_search_template_results(){
    if(isset($_GET['search'])) {
        if( $_GET['search'] == 'mycpt' ) {
            load_template( locate_template( 'mycpt-search-result.php' ));
        } else {
            load_template( locate_template( 'search.php' ));
        }
    }
}
add_action('init','load_search_template_results');

The page mycpt-search-result.php is just a wp_query loop, looping through post data as required to tailor to your design.

Hope that puts you on the right track.