Adding a custom search functionality to your WordPress blog enhances user experience by allowing visitors to find content more easily. This guide will walk you through creating a custom search.php file, a searchform.php file, and styling the search form for your WordPress theme.
Table of Contents
ToggleStep 1: Create a search.php File
The search.php file is used to display search results when a user performs a search.
<?php
/**
* The template for displaying search results.
*
* @package YourThemeName
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<header class="page-header">
<h1 class="page-title">
<?php printf( esc_html__( 'Search Results for: %s', 'your-theme' ), '<span>' . get_search_query() . '</span>' ); ?>
</h1>
</header>
<?php if ( have_posts() ) : ?>
<div class="search-results-list">
<?php
while ( have_posts() ) :
the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
</header>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; ?>
</div>
<?php the_posts_navigation(); ?>
<?php else : ?>
<div class="no-results">
<h2><?php esc_html_e( 'No results found', 'your-theme' ); ?></h2>
<p><?php esc_html_e( 'Please try a different search term.', 'your-theme' ); ?></p>
</div>
<?php endif; ?>
</main>
</div>
<?php get_footer(); ?>
Step 2: Create a searchform.php File
<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div>
<label class="screen-reader-text" for="s"><?php _e( 'Search for:', 'your-theme' ); ?></label>
<input type="text" name="s" id="s" placeholder="Search blogs..." value="<?php echo get_search_query(); ?>" />
<input type="hidden" name="post_type" value="post" />
<button type="submit" id="searchsubmit"><?php _e( 'Search', 'your-theme' ); ?></button>
</div>
</form>
Step 3: Add the Search Form to Your Theme
<?php get_search_form(); ?>
Step 4: Style the Search Form
.searchform {
display: flex;
gap: 10px;
align-items: center;
max-width: 600px;
margin: 20px auto;
}
.searchform input[type="text"] {
flex: 1;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 16px;
box-sizing: border-box;
}
.searchform button#searchsubmit {
background-color: #ec713c;
color: #fff;
border: none;
border-radius: 5px;
padding: 10px 20px;
cursor: pointer;
font-size: 16px;
text-transform: uppercase;
}
.searchform button#searchsubmit:hover {
background-color: #d85a2b;
}
@media (max-width: 768px) {
.searchform {
flex-direction: column;
}
.searchform input[type="text"],
.searchform button#searchsubmit {
width: 100%;
}
}
Step 5: Add the below code in function.php (Theme_folder->function.php)
function custom_search_shortcode() {
ob_start();
get_search_form();
return ob_get_clean();
}
add_shortcode( 'custom_search', 'custom_search_shortcode' );
Use the shortcode [custom_search] in your WordPress page/post to display the search form.
Step 6: Test the Search Functionality
Visit your WordPress site, perform a search, and verify that the results are displayed correctly.