在我的搜索.php中按Tag_ID显示搜索结果

时间:2019-02-08 作者:Daniel Garrido

我有我的搜索。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”隐藏输入触发新查询。

谢谢

1 个回复
最合适的回答,由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\');

相关推荐

如何在class-wp-query.php中跟踪核心函数is_page()&is_Single上的通知警告

在我的生产站点上,我的这些产品已经超支了:PHP Notice: Trying to get property of non-object in /public_html/wp-includes/class-wp-query.php on line 3728 PHP Notice: Trying to get property of non-object in /public_html/wp-includes/class-wp-query.php on line 3730 PHP No