我正在尝试替换我自己的搜索表单。
示例插件:
<?php
/*
Author: whatever
Plugin Name: Some Name
Plugin URI:
Text Domain: some-domain
Version: 1.0
*/
function custom_search($form)
{
$form = "testing<form method = 'get' id = 'searchform' action = ' ".site_url()." ' >";
$form .= "<div><label class = 'hidden' for='s'>". __("Search for: ") . "</label>";
$form .= "<input type = 'text' value=' ". esc_attr(apply_filters('the_search_query', get_search_query())) ." ' name='s' id='s' />";
$form .= "<input type = 'submit' id='searchsubmit' value=' ".esc_attr(__('Look for it'))." ' />";
$form .= "</div>";
$form .= "</form>";
return $form;
}
add_filter('get_search_form', 'custom_search');
结果,不起作用。
我正在使用最新的Wordpress二十世纪主题。
我在这里缺少什么?!?
编辑:看来如果主题有searchform.php文件,该过滤器将被该文件覆盖。所以基本上过滤只有在主题没有searchform.php时才有效。现在这只是愚蠢..
答案 0 :(得分:1)
这是get_search_form( $echo )
函数中一个众所周知的WordPress错误的结果,它会忽略$ echo参数,并且总是回显jf你的主题中有一个searchform.php模板文件。
这是一个废话功能,有一个2岁trac ticket。在他们解决之前,几乎没有解决方法:
1.使用file_get_contents()
- 但不会解析PHP
2.使用带有get_searchform挂钩的自定义函数(不是实际函数)
3.或使用简单的输出缓冲将输出捕获为变量;