将id和类添加到WordPress搜索表单中的搜索输入

时间:2018-12-02 作者:din personal

我想将AJAX功能应用到WordPress的自定义搜索主题。我需要使用id和class来确定输入的目标。

我没有找到任何关于将id添加到预制WordPress搜索表单的教程。记住你,我说的是get_search_form() 作用

我想修改它的输入,并想向其中添加类。如果使用add_filter 或其他任何事情。提前谢谢。

2 个回复
最合适的回答,由SO网友:Maqk 整理而成

你可以在get_search_form(). 将优先级设置得足够高,以覆盖在主题中创建的任何内容。如果您有searchform。在您的主题中,将使用php。输入文本字段应命名为s,并且应始终包括以下示例中所示的标签。

WordPress Search Form Function Track

function custom_search_form( $form ) {
  $form = \'<form role="search" method="get" id="searchform" class="searchform" action="\' . home_url( \'/\' ) . \'" >
    <div class="custom-search-form"><label class="screen-reader-text" for="s">\' . __( \'Search:\' ) . \'</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\', \'custom_search_form\', 100 );

SO网友:Krzysiek Dróżdż

让我们看看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 &hellip;\', \'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是否存在,并对其进行更改或添加。。。

相关推荐

为内置钩子调用do_action和Apply_Filters是否安全?

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风