我有我的搜索。php工作正常。但我想在搜索中显示搜索结果。当来自另一个搜索表单时,php按tag\\u ID过滤。我尝试了以下几种方法:wp\\u parse\\u str、新的wp\\u查询({这里的参数}),等等。基本上我不知道如何修改查询:(
如何修改主查询才能做到这一点?
非常感谢您的帮助!
PD:我在这里读了好几篇帖子,但没有人回答我的问题。
这是我的表单代码:
<form role="search" method="get" class="form-inline cp-form-search search-form" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<input type="search" id="s" class="search-field form-control p-2" placeholder="<?php echo esc_attr_x( \'Search \'.$venue_archive_title, \'placeholder\' ); ?>" aria-label="Search" value="<?php echo get_search_query(); ?>" name="s">
<input type="hidden" value="restaurants" name="venue_type_search" id="venue_type_search" />
<input type="hidden" value="title" name="orderby" id="orderby" />
<input type="hidden" value="ASC" name="order" id="order" />
<button type="submit"><img src="<?php echo get_template_directory_uri(); ?>/assets/images/search-white.svg" height="22"></button>
</form>
我想用我的“venue\\u type\\u search”隐藏输入触发新查询。
谢谢
最合适的回答,由SO网友:Fabrizio Mele 整理而成
使用筛选pre_get_posts
, 像这样:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
if(isset($_GET[\'venue_type_search\'])) {
$venue_type = $_GET[\'venue_type_search\'];
$query->set(\'tag\',array($venue_type));
}
}
return $query;
}
add_filter(\'pre_get_posts\',\'searchfilter\');