Wordpress - 自定义搜索查询

时间:2016-11-22 05:04:08

标签: php wordpress .htaccess redirect search

我正在使用WooCommerce运行最新的Wordpress

我在网站标题中使用搜索栏时尝试自定义搜索结果。

这是执行常规搜索时结果的显示方式:

http://www.sunshinetrading.com/snowmasters/?s=snow

当我搜索WooCommerce时,这就是 出现的方式。

http://www.sunshinetrading.com/snowmasters/?s=snow&post_type=product

我需要做的是自动将&post_type=product附加到从标头启动的每个搜索查询中。

我尝试解决方案:

我将此添加到我的子主题functions.php文件中,尝试附加可以修复所有内容的查询。

// Search WooCommerce

function search_filter($query) {
    if ( !is_admin() && $query->is_main_query() ) {
        if ($query->is_search) {
            echo esc_url( add_query_arg( 'post_type', 'product' ) );
            $query->set('post_type', 'product');
        }
    }
}

add_action('pre_get_posts','search_filter');

但是,当我执行此操作并进行搜索时,在网站继续加载与之前完全相同的页面之前,URL 应该的内容会短暂显示为页面上的文本。

我做错了什么?也许我可以通过编辑.htaccess文件来解决这个问题。我添加了以下内容......

# REWRITE SNOWMASTERS SEARCH
RedirectMatch 302 snowmasters.com.au/?s=(.*) http://snowmasters.com.au/?s=$1&post_type=product

这应该将http://snowmasters.com.au/?s=snow重定向到http://snowmasters.com.au/?s=snow&post_type=product

但是它没有用?

感谢您的帮助Stack Overflow社区:)

由于

1 个答案:

答案 0 :(得分:0)

你有没有试过这个功能?

add_query_arg( 'post_type', 'product', 'http://www.sunshinetrading.com/' );

你也可以在wordpress中注册查询字符串var,如下所示:

   function add_query_vars_filter( $qVars ){
   $qVars[] = "post_type";
   return $qVars;
   }
   add_filter( 'query_vars', 'add_query_vars_filter' );

这来自于手抄本:https://codex.wordpress.org/Plugin_API/Filter_Reference/query_vars