搜索:如何扩展现有搜索以包括定制表

时间:2016-09-08 作者:user880386

我创建了一个带有以下字段的自定义表“products”:标题、描述、url。将导入存储到表中的项目。

我想将wordpress搜索扩展到此表。有可能做到这一点吗?

2 个回复
SO网友:JItendra Rana

默认情况下,WordPress按关键字搜索。这意味着,当传递搜索查询“Loren Ipsum”时,WordPress为WHERE子句构建了以下内容:

((wp_posts.post_title LIKE \'%Loren%\') OR
(wp_posts.post_content LIKE \'%Loren%\')) 
AND
((wp_posts.post_title LIKE \'%Ipsum%\') OR
(wp_posts.post_content LIKE \'%Ipsum%\'))
This 答案会对你有帮助!还有一个插件:Search Everything

SO网友:Martin Nickolov

取决于你想怎么做。我目前正在创建一个带有自定义搜索的网站。我分了两步就完成了。

思考首选url:www.example。com/search/<;product\\u name>

  • 为自定义搜索创建wordpress模板

    add_action(\'init\',\'custom_rewrite_tags\');
    
    function custom_rewrite_tags() {
        add_rewrite_tag(\'%var%\',\'([^&]+)\');
    }
    
    现在你可以创建你的重写,因此搜索是一个你喜欢的漂亮url

    add_action(\'admin_init\',\'action_custom_rewrite_rules\');
    function action_custom_rewrite_rules() {
        add_rewrite_rule(\'^search/([^&]+)/?$\',\'index.php?page_id=<the page id>&var=$matches[1]\',\'top\'); 
    }
    
    添加重写规则指定要与url匹配的正则表达式,以及它将发送到索引的共同响应查询。php。regex捕获在$matches变量中重新注册,从索引1开始,第一个捕获的组。在这种情况下,无论www.example是什么。com/search/<;此处>/。我们将匹配项分配给您的自定义重写标记。

    现在,您可以在搜索模板中启动一个功能,它将可以访问重写标记。例如,将返回变量。如果您不喜欢漂亮的url-s,可以始终使用get\\U查询进行搜索:

    /*
     * Template name: Custom Search Template
     */
    $var = get_query_var(\'var\');
    
    现在是查询

    $sql = $wpdb->prepare("SELECT * FROM myTable WHERE var = %s",
        $var);
    $results = $wpdb->get_results($sql);
    
  • 在结果中,你有你的结果,对它们做任何你想做的事。

    相关推荐

    从wp-Query获取数据,在循环之外&不更改url

    我正在基于自定义分类法在wordpress上进行高级搜索。我已经被困72小时了,所以我希望能得到一些帮助或思考。。。步骤1——在js文件中,查询字符串如下所示:if (jQuery(\'#s\').val() == \'\'){ URL = \"/?genre=\" + genre + \'...other Stuff\' #content\'; }else{ URL = \"/?s=\"+searchQueryString+\"&genre=\" + genre +\'.