Source : http://codex.wordpress.org/Function_Reference/get_search_form
WordPress will render its built-in HTML5 search form:
Example of a custom searchform.php:
A last option is to write a custom function (in your functions.php file) and hook that function to the get_search_form action hook.
Description
Display search form using searchform.php Theme file.Usage
<?php get_search_form( $echo ); ?>
Parameters
- $echo
- (boolean) (optional) true to echo the form; false to return the form as a string.
- Default: true
Return Values
- (string)
- The form's HTML, if the $echo parameter is set to false.
Examples
Default HTML4 Form
If you don't have searchform.php in your Theme, WordPress will render its built-in search form:<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 _x( 'Search for:', 'label' ); ?></label> <input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" /> <input type="submit" id="searchsubmit" value="<?php echo esc_attr_x( 'Search', 'submit button' ); ?>" /> </div> </form>The above form is used on HTML4 websites.
Default HTML5 Form
Since WordPress 3.6, If your theme supports HTML5, which happens if it uses:add_theme_support( 'html5', array( 'search-form' ) );
WordPress will render its built-in HTML5 search form:
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>"> <label> <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span> <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" /> </label> <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" /> </form>Among the changes is that the form has a class="search-form". Also, the input is type="search" and not type="text". Furthermore there is a placeholder, which displays text when appropriate, which means you don't need javascript to display the placeholder. There are no elements with an id anymore, so you can have multiple searchforms in a valid document.
Theme Form
If you do have searchform.php in your Theme, it will be used instead. Keep in mind that the search form should do a GET to the homepage of your blog. The input text field should be named s and you should always include a label like in the examples above.Example of a custom searchform.php:
<form action="/" method="get"> <fieldset> <label for="search">Search in <?php echo home_url( '/' ); ?></label> <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" /> <input type="image" alt="Search" src="<?php bloginfo( 'template_url' ); ?>/images/search.png" /> </fieldset> </form>The only parameter here that will be submitted is s with the value of the current search query. However, you can refine it in many ways. For example by only showing posts in the search results. This can be done with the next addition to the form above:
<input type="hidden" value="post" name="post_type" id="post_type" />Here we submit the value post. The default value is any, meaning, posts, pages and custom post types. With the input above added to the form it will now only search in posts with the post_type post. There are many additions like this. With a var_dump of the object $wp_query you can see all the default values of the search variables. With a var_dump of $wp_query->query you can see the current query.
A last option is to write a custom function (in your functions.php file) and hook that function to the get_search_form action hook.
function my_search_form( $form ) {
$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . home_url( '/' ) . '" >
<div><label class="screen-reader-text" for="s">' . __( 'Search for:' ) . '</label>
<input type="text" value="' . get_search_query() . '" name="s" id="s" />
<input type="submit" id="searchsubmit" value="'. esc_attr__( 'Search' ) .'" />
</div>
</form>';
return $form;
}
add_filter( 'get_search_form', 'my_search_form' );
Notes
Please usevalue="<?php echo get_search_query(); ?>" (so a wrapper function for: esc_attr( $s );
and other necessary filters) if you'd like to display currently
searched term in the search field once searching have already occurred.
This is one of the most XSS vulnerable places in themes if not secured.
ReplyDeleteHello,
we provide affordable and result-oriented SEO services, please give a chance to serve you.
Thanks
Admin: E07.net