В теме 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);
}
Кажется, это не работает. Эта проблема сложнее, чем мне кажется? Или я на правильном пути? Кто-нибудь знает простой способ кодирования этого?
Большое спасибо!