Welcome to Dagon Design. In addition to free scripts, WordPress plugins, and articles, we offer a variety of services including custom theme design, plugin creation, and PHP scripting. Contact me for more information.

Updated Saturday, February 21st, 2009 at 1:13pm

WordPress Search Form without Search Button

This article explains a method for displaying a WordPress search form without a search button. The user simply enters they text they would like to search for, and hits enter. While this is easy to do with the use of a hidden submit button, this method also allows for the use of a default message in the search box (such as “Enter your search”), which keeps you from having to display a label next to the form explaining what it is for. This default message automatically clears when the user clicks to start typing, and puts itself back if the user clicks away. This allows you to have a search form that looks nice and clean, and is still just as functional.

The code

(extra newlines have been added to the code to make it fit the page properly)

<?php $search_text = "Search"; ?> 
<form method="get" id="searchform"  
action="<?php bloginfo('home'); ?>/"> 
<input type="text" value="<?php echo $search_text; ?>"  
name="s" id="s"  
onblur="if (this.value == '')  
{this.value = '<?php echo $search_text; ?>';}"  
onfocus="if (this.value == '<?php echo $search_text; ?>')  
{this.value = '';}" /> 
<input type="hidden" id="searchsubmit" /> 
</form>

Usage

Most WordPress themes have a file called searchform.php which contains the code that generates the search form. All you generally have to do is replace the existing code with the code above.

For themes without the searchform.php file, you can place this code directly into your theme files, wherever you would like the search to go.

Changing the default text

To change the default text of the form, you just have to configure the $search_text variable in the first line of the code.

Styling the form

Using CSS, it is easy to adjust your form. For example, if you want to define the exact width of the search field, you could wrap a div around it like this:

<div class="search-form">
(form code goes here)
</div>

And then in your CSS file, add the following:

.search-form input {
  width: 150px;
}

Example

You can see an example of this method in the left sidebar of this website.

  If you have found this page useful, please consider donating. Thanks!

Pages: « 4 3 2 [1] Show All

  1. Cheers for the code snippet. Was number 1 on Google and worked a treat.

  2. Thanks for this!

  3. I have placed the above code in my searchform.php file and uploaded it to my theme. I disabled the widget in the admin section of wordpress and have the include script for the searchform.php on my sidebar.php file.

    The problem is that I do not see any search box in my side bar now. it will only show the widget. When the widget is off there is no search. Any one know whats going on?

  4. Thank you. It’s rare when you do simple search, find a solution, and it works perfectly. I am using a nice template (Chaotic Soul) but either my search button or the default text was not showing. A simple cut-and-paste and a quick edit of the default text and I have exactly what I wanted. Thanks again for you work.

  5. Jakob: The simple answer is that that function makes input from a visitor safe to display on the screen. Since some search forms show what the user typed in, when the search results are shown. The method above does not do this :)

  6. 10
    Jakob

    Oh! Sorry for the danish words in my form :-)

  7. 9
    Jakob

    Here is what I use:

    
    <form method="get" id="searchform" action="<?php bloginfo('home'); ?>/">
    <input type="text" onclick="if(this.value=='&nbsp;Indtast s&oslash;geord her') { this.value=''; }" value="&nbsp;Indtast s&oslash;geord her" name="s" id="s" />
    <input type="hidden" id="searchsubmit" value="Search" />
    </form>
    

    In many WP search forms you’ll see that the value of the input field is set to:

    value="<?php echo wp_specialchars($s, 1); ?>"

    Why? What does it do? And is it important?

  8. Lisagh: The code above just changes the way the search button is displayed. It does not change the way the results are generated.

    It is probably showing the protected posts because you are logged in. If you log out and search they should not appear.

  9. 7
    Lisagh

    Love your search box. However, when I put it in on my wordpress blog, it all posts, even my PROTECTED POSTS. Do you know how to limit it to showing only unprotected posts after a search?

  10. matthijs: Thanks :)

  11. 5
    matthijs

    A few alternatives are
    1) use #
    2) use htmlentities($_SERVER['PHP_SELF'], ENT_QUOTES,
    ‘UTF-8′); or
    3) basename(__FILE__)
    Some good info here http://blog.phpdoc.info/archives/13-XSS-Woes.html

  12. matthijs: I just changed it to use bloginfo to get the path :) Thanks for pointing that out. What method do you generally prefer (outside of WP), out of curiosity?

  13. 3
    matthijs

    The use of PHP_SELF is not so wise, as it can contain tainted data (from the client). So do not use that variable or make sure you escape it.

  14. Christian: Perhaps. The WordPress support forums would be a better place to ask though. The comments here are primarily for the discussion of the article.

  15. Is there a way to include a SEACH FIELD (of the Wordpress Database) on a EXTERNAL WEBSITE?

Pages: « 4 3 2 [1] Show All

Leave a Comment

Before you comment: If you are having an issue with a script, please make sure you have read the entire article. Also, please read through the comments because most common issues have already been discussed many times. Thanks.


Be sure to wrap all code in <code></code> tags.