当前浏览:首页 / WordPress函数 / get_search_form()

get_search_form( array $args = array() )

显示搜索表单

form 表单

search


描述

将首先尝试定位searchform.php文件,然后加载它。如果不存在,则会显示默认搜索表单。默认搜索表单为HTML,将显示该表单。有一个应用于搜索表单HTML的过滤器,用于编辑或替换它。过滤器钩子为‘get_search_form’

此函数主要用于希望将搜索表单硬编码到边栏中的主题,也可用于WordPress中的搜索小工具。

还有一个动作钩子,在函数运行时调用‘pre_get_search_form’。这对于输出搜索所依赖的JavaScript或应用于搜索开始的各种格式非常有用。


参数

$args

(array) (可选) 显示参数的数组。

  • 'echo'
    (bool) 输入或返回表单,默认为true
  • 'aria_label'
    (string) 搜索表单的ARIA标签,有助于区分同一页面上的多个搜索表单,提高可访问性。

默认值: array()


返回

(void|string) 如果'echo'参数为true,则无返回,如果'echo'为false,则返回搜索表单HTML。


说明

用法

get_search_form( $echo );



源码

查看源码 官方文档


更新日志

版本描述
5.2.0添加了$args数组参数来代替$echo布尔标志
2.7.0开始引入

使用示例

  • 示例1

    如果主题中确实有searchform.php,则将使用它。请记住,搜索表单应该能够访问您博客的主页。输入文本字段应命名为s,并且应始终包括如上述示例中所示的标签。

    自定义searchform.php示例:

    <form action="/" method="get">
    	<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" />
    </form>
    

    此处将提交的唯一参数是带有当前搜索查询值的s。但是,您可以通过多种方式对其进行优化。例如,只在搜索结果中显示文章。这可以通过向上表中添加下一项来完成:

    <input type="hidden" value="post" name="post_type" id="post_type" />
    

    在这里,我们提交值“post”。默认值为any、means、posts、page和自定义post类型。将上面的输入添加到表单中后,它现在将只搜索带有post_type的文章。有许多这样的补充。使用对象$wp_queryvar_dump可以看到搜索变量的所有默认值。使用var_dump$wp_query->query可以查看当前查询。

    最后一个选项是编写一个自定义函数(在functions.php文件中),并将该函数挂接到get_search_form动作钩子。

    /**
     * Generate custom search form
     *
     * @param string $form Form HTML.
     * @return string Modified form HTML.
     */
    function wpdocs_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', 'wpdocs_my_search_form' );
    
  • 示例2

    自WordPress 3.6以来,如果主题支持HTML5标记,则默认HTML5格式,如果主题使用:

    /**
     * Add HTML5 theme support.
     */
    function wpdocs_after_setup_theme() {
    	add_theme_support( 'html5', array( 'search-form' ) );
    }
    add_action( 'after_setup_theme', 'wpdocs_after_setup_theme' );
    

    WordPress将呈现其内置的HTML5搜索表单:

    <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>
    

    其中一个变化是该表单具有class="search-form"。此外, input是type="search",而不是type="text"。此外,还有一个占位符,在适当的时候显示文本,这意味着您不需要JavaScript来显示占位符。不再存在具有id的元素,因此在一个有效文档中可以有多个searchforms。

  • 示例3

    如果主题中没有searchform.php,WordPress将显示其内置搜索表单:

    <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>
    

    以上表格用于HTML4网站。