让我们看看get_search_form
code.
function get_search_form( $echo = true ) {
...
$search_form_template = locate_template( \'searchform.php\' );
if ( \'\' != $search_form_template ) {
ob_start();
require( $search_form_template );
$form = ob_get_clean();
} else {
if ( \'html5\' == $format ) {
$form = \'<form role="search" method="get" class="search-form" action="\' . esc_url( home_url( \'/\' ) ) . \'">
<label>
<span class="screen-reader-text">\' . _x( \'Search for:\', \'label\' ) . \'</span>
<input type="search" class="search-field" placeholder="\' . esc_attr_x( \'Search …\', \'placeholder\' ) . \'" value="\' . get_search_query() . \'" name="s" />
</label>
<input type="submit" class="search-submit" value="\'. esc_attr_x( \'Search\', \'submit button\' ) .\'" />
</form>\';
} else {
$form = \'<form role="search" method="get" id="searchform" class="searchform" action="\' . esc_url( home_url( \'/\' ) ) . \'">
<div>
<label class="screen-reader-text" for="s">\' . _x( \'Search for:\', \'label\' ) . \'</label>
<input type="text" value="\' . get_search_query() . \'" name="s" id="s" />
<input type="submit" id="searchsubmit" value="\'. esc_attr_x( \'Search\', \'submit button\' ) .\'" />
</div>
</form>\';
}
}
....
$result = apply_filters( \'get_search_form\', $form );
if ( null === $result )
$result = $form;
if ( $echo )
echo $result;
else
return $result;
}
正如你所看到的,有
get_search_form
在返回/打印表单之前调用过滤器,以便您可以使用它向表单添加类/ID。
不过有一个陷阱。。。表单的代码可能以不同的方式显示。在上面的代码中,您已经看到了两个版本(html和html5),但表单也可以使用模板文件进行编码。。。所以这可能有点棘手。。。
但还是。。。添加筛选器,检查类attr是否存在,并对其进行更改或添加。。。