描述
将首先尝试定位searchform.php文件,然后加载它。如果不存在,则会显示默认搜索表单。默认搜索表单为HTML,将显示该表单。有一个应用于搜索表单HTML的过滤器,用于编辑或替换它。过滤器钩子为‘get_search_form’。
此函数主要用于希望将搜索表单硬编码到边栏中的主题,也可用于WordPress中的搜索小工具。
还有一个动作钩子,在函数运行时调用‘pre_get_search_form’。这对于输出搜索所依赖的JavaScript或应用于搜索开始的各种格式非常有用。
参数
- $args
-
(array) (可选) 显示参数的数组。
- 'echo'
(bool) 输入或返回表单,默认为true - 'aria_label'
(string) 搜索表单的ARIA标签,有助于区分同一页面上的多个搜索表单,提高可访问性。
默认值: array()
- 'echo'
返回
(void|string) 如果'echo'参数为true,则无返回,如果'echo'为false,则返回搜索表单HTML。
说明
用法
get_search_form( $echo );
源码
更新日志
版本 | 描述 |
---|---|
5.2.0 | 添加了$args 数组参数来代替$echo 布尔标志 |
2.7.0 | 开始引入 |
使用示例
如果主题中确实有
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_query
的var_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' );
自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。如果主题中没有
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网站。