【发布时间】:2011-12-26 21:44:49
【问题描述】:
在 wordpress 主题中,我设置了一些基于自定义分类法的搜索过滤器,它们将使用以下 URL 结构查询帖子:
http://myblog.com/?taxonomy1=term1+term2&taxonomy2=term3+term4
除了这些过滤器之外,我还想集成文本搜索,但不知道如何将搜索查询(例如 ?s=mysearchhere)附加到现有分类查询中。所以总的来说,我希望表单在提交时能够指向一个结合了两个字符串的 url:
“http://myblog.com/?taxonomy1=term1+term2&taxonomy2=term3+term4&s=mysearchhere”
到目前为止,我已经尝试使用以下功能生成搜索表单:
function remove_querystring_var($url, $key) {
$url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -1);
return $url;
}
function apl_search_form($echo = true) {
do_action( 'get_search_form' );
$search_form_template = locate_template('searchform.php');
if ( '' != $search_form_template ) {
require($search_form_template);
return;
}
$url = $_SERVER["REQUEST_URI"];
$action = remove_querystring_var($url,'s');
$form = '<form role="search" method="get" id="searchform" action="' . $action . '" >
<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>';
if ( $echo )
echo apply_filters('get_search_form', $form);
else
return apply_filters('get_search_form', $form);
}
这似乎不起作用。这个问题比我想象的要复杂吗?还是我走在正确的轨道上?有谁知道这种编码的简单方法?
非常感谢!
【问题讨论】:
-
您能否更具体地了解“似乎不起作用”?您的表单值将自动附加到 URL,b/c 您正在执行“获取”与“发布”。
标签: php forms wordpress search query-string