get_search_form
函数
get_search_form ( $args = array() )
- 参数
-
-
(array)
$args
{ Optional. Array of display arguments. @type bool $echo Whether to echo or return the form. Default true. @type string $aria_label ARIA label for the search form. Useful to distinguish multiple search forms on the same page and improve accessibility. Default empty. }- Required: 否
- Default: array()
-
(array)
- 返回值
-
- (void|string) Void if ‘echo’ argument is true, search form HTML if ‘echo’ is false.
- 定义位置
-
-
wp-includes/general-template.php
, line 239
-
wp-includes/general-template.php
- 引入
- 2.7.0
- 弃用
- –
显示搜索表单。
将首先尝试在子目录或父目录中找到 searchform.php 文件,然后加载它。如果它不存在,那么默认的搜索表单将被显示。默认的搜索表单是HTML,它将被显示。有一个过滤器应用于搜索表单的HTML,以便编辑或替换它。该过滤器是{@see ‘get_search_form’}。
这个函数主要被那些想把搜索表单硬编码到侧边栏的主题使用,也被WordPress中的搜索小工具使用。
还有一个动作,在该函数运行时被调用,{@see ‘pre_get_search_form’}。这对于输出搜索所依赖的JavaScript或适用于搜索开始的各种格式化是很有用的。举几个例子说明它可以用来做什么。
function get_search_form( $args = array() ) { /** * Fires before the search form is retrieved, at the start of get_search_form(). * * @since 2.7.0 as 'get_search_form' action. * @since 3.6.0 * @since 5.5.0 The `$args` parameter was added. * * @link https://core.trac.wordpress.org/ticket/19321 * * @param array $args The array of arguments for building the search form. * See get_search_form() for information on accepted arguments. */ do_action( 'pre_get_search_form', $args ); $echo = true; if ( ! is_array( $args ) ) { /* * Back compat: to ensure previous uses of get_search_form() continue to * function as expected, we handle a value for the boolean $echo param removed * in 5.2.0. Then we deal with the $args array and cast its defaults. */ $echo = (bool) $args; // Set an empty array and allow default arguments to take over. $args = array(); } // Defaults are to echo and to output no custom label on the form. $defaults = array( 'echo' => $echo, 'aria_label' => '', ); $args = wp_parse_args( $args, $defaults ); /** * Filters the array of arguments used when generating the search form. * * @since 5.2.0 * * @param array $args The array of arguments for building the search form. * See get_search_form() for information on accepted arguments. */ $args = apply_filters( 'search_form_args', $args ); // Ensure that the filtered arguments contain all required default values. $args = array_merge( $defaults, $args ); $format = current_theme_supports( 'html5', 'search-form' ) ? 'html5' : 'xhtml'; /** * Filters the HTML format of the search form. * * @since 3.6.0 * @since 5.5.0 The `$args` parameter was added. * * @param string $format The type of markup to use in the search form. * Accepts 'html5', 'xhtml'. * @param array $args The array of arguments for building the search form. * See get_search_form() for information on accepted arguments. */ $format = apply_filters( 'search_form_format', $format, $args ); $search_form_template = locate_template( 'searchform.php' ); if ( '' !== $search_form_template ) { ob_start(); require $search_form_template; $form = ob_get_clean(); } else { // Build a string containing an aria-label to use for the search form. if ( $args['aria_label'] ) { $aria_label = 'aria-label="' . esc_attr( $args['aria_label'] ) . '" '; } else { /* * If there's no custom aria-label, we can set a default here. At the * moment it's empty as there's uncertainty about what the default should be. */ $aria_label = ''; } if ( 'html5' === $format ) { $form = '
‘;
} else {
$form = ‘
‘;
}
}
/**
* Filters the HTML output of the search form.
*
* @since 2.7.0
* @since 5.5.0 The `$args` parameter was added.
*
* @param string $form The search form HTML output.
* @param array $args The array of arguments for building the search form.
* See get_search_form() for information on accepted arguments.
*/
$result = apply_filters( ‘get_search_form’, $form, $args );
if ( null === $result ) {
$result = $form;
}
if ( $args[‘echo’] ) {
echo $result;
} else {
return $result;
}
}