wordpress get_search_form()函数


【函数介绍】

get_search_form()用于包含主题文件下的搜索表单文件searchform.php,如果没有这个php文件则会指定调用默认的搜索表单。

【函数使用】

  1. <?php get_search_form( $echo ); ?>

【参数说明】

$echo
(boolean) (可选) true – 直接输出搜索表单; false – 以字符串形式返回搜索表单.
默认: true

【返回值】

(string) 如果 $echo参数为false返回HTML的form表单字符串。

【函数实例】

1、如果主题目录里没有searchform.php这个文件,那么WordPress将默认使用内置的搜索表单:

  1. <form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
  2. <div><label class="screen-reader-text" for="s">Search for:</label>
  3. <input type="text" value="" name="s" id="s" />
  4. <input type="submit" id="searchsubmit" value="Search" />
  5. </div>
  6. </form>

2、如果主题文件里有searchform.php这个文件,那么WordPress就会使用指定的搜索表单模版。注意,搜索表单应该使用get方法指向主页,文本域的name应该是s。
这是一个自定义searchform.php的例子:

  1. <form action="/" method="get">
  2. <fieldset>
  3. <label for="search">Search in <?php echo home_url( '/' ); ?></label>
  4. <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
  5. <input type="image" alt="Search" src="<?php bloginfo( 'template_url' ); ?>/images/search.png" />
  6. </fieldset>
  7. </form>

3、最后,还得在主题的functions.php文件里添加一个自定义函数,作为一个钩子与get_search_form函数连接起来,搜索表单才起作用。

  1. function my_search_form( $form ) {
  2.  
  3. $form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '" >
  4. <div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
  5. <input type="text" value="' . get_search_query() . '" name="s" id="s" />
  6. <input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
  7. </div>
  8. </form>';
  9.  
  10. return $form;
  11. }
  12.  
  13. add_filter( 'get_search_form', 'my_search_form' );

【源代码】

get_search_form() 位于 wp-includes/general-template.php,函数代码如下:

  1. function get_search_form($echo = true) {
  2. do_action( 'get_search_form' );
  3. $search_form_template = locate_template('searchform.php');
  4. if ( '' != $search_form_template ) {
  5. require($search_form_template);
  6. return;
  7. }
  8. $form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
  9. <div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
  10. <input type="text" value="' . get_search_query() . '" name="s" id="s" />
  11. <input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
  12. </div>
  13. </form>';
  14. if ( $echo )
  15. echo apply_filters('get_search_form', $form);
  16. else
  17. return apply_filters('get_search_form', $form);
  18. }
  19. ?>