confusion with add_filter

时间:2012-08-19 作者:Jamie

我正在尝试自定义默认的WordPress搜索字段。所以我想我可以添加一个过滤器来删除该函数,然后添加一个新函数,并按照我想要的方式添加字段。所以我试过这个

 function savior_search(){
     <form role="search" method="get" id="searchform" action="<?php echo home_url( \'/\');        ?>">
    <input type="text" value="" name="s" id="s" />
</form>
<?php }

 add_filter( \'get_search_form\', \'savior_search\');
它似乎有效,但由于某种原因,我不明白,它复制了搜索字段。它会将表单放在页面上两次。我还在侧边栏中注释了get\\u search\\u表单,但当我刷新页面时,它仍然在那里。我使用的过滤器不正确?我的搜索功能位于功能中。php。

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

你的语法错误,你把htmlphp function 在一开始。

请看这里的过滤器-wp-includes/general-template.php#L151

我认为我们应该返回表单,而不是打印它,请看我的示例,它应该可以工作,如果您想修改某些内容,请在函数中执行。

Example -

function savior_search(){

    //Modify This
    $form = \'<form role="search" method="get" id="searchform" action="\' . esc_url( 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\', \'savior_search\');

结束

相关推荐

调用Function_Exist()比调用Apply_Filters()快还是慢

调用函数\\u exists()时,应用\\u filters()的速度是快还是慢。。。还是差异太小,不应该考虑?我在Kaiser的基础上做了一些测试,结果表明,在同时存在函数和过滤器的情况下,function\\u exists()的速度大约是3倍。如果过滤器不存在,速度将提高约11倍。没想到会这样。function taco_party() { return true; } add_filter( \'taco-party\', \'taco_party\'