了解WordPress搜索

时间:2014-04-11 作者:MxmastaMills

我正在尝试创建一个类似于totaljobs的自定义搜索。但通过WordPress网站。基本上,我可以同时搜索搜索词和位置。

它现在的工作方式是,有一个搜索词字段,然后还有一个位置搜索。它们是两个独立的字段。对于搜索词字段,我使用标准的WordPress搜索,对于位置搜索,我使用作业纬度、经度和半径设置,并通过Google Maps API运行它们。如您所见,两种搜索的搜索过程都有很大不同。

我在帖子中添加了纬度和经度的自定义字段,并在数据库中查询它们以进行搜索。我不知道标准的WordPress搜索是如何工作的。是否在post\\u内容和post\\u标题字段等中查找。?我似乎找不到服务器端代码来调查它,因为搜索。php更像是一种通用循环代码。

我发现$s是搜索词的全局变量,但我找不到该变量的处理位置,我对数据库如何使用该变量感兴趣,因为我认为我需要围绕当前的WordPress搜索信息进行构建。

我感谢你的帮助。谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

默认搜索由处理WP_Query 主要是通过一个名为parse_search(), 由s 参数您可以搜索WP_Query 对于is_search 把其他一些零碎的东西拼凑在一起。

或者您可以创建一个查询。。。

$s = new WP_Query(array(\'s\' => \'test\'));
。。。转储SQL。。。

var_dump($s->request);
。。。并阅读它。

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
  AND (((wp_posts.post_title LIKE \'%test%\')
        OR (wp_posts.post_content LIKE \'%test%\')))
  AND (wp_posts.post_password = \'\')
  AND wp_posts.post_type IN (\'post\',
                             \'page\',
                             \'attachment\',
                             \'book\')
  AND (wp_posts.post_status = \'publish\')
ORDER BY wp_posts.post_date DESC LIMIT 0,2
您应该看到,默认情况下LIKE 查询标题和内容。“句子”搜索被分解如下:

AND (((wp_posts.post_title LIKE \'%Hello%\')
      OR (wp_posts.post_content LIKE \'%Hello%\'))
     AND ((wp_posts.post_title LIKE \'%I%\')
          OR (wp_posts.post_content LIKE \'%I%\'))
     AND ((wp_posts.post_title LIKE \'%am%\')
          OR (wp_posts.post_content LIKE \'%am%\'))
     AND ((wp_posts.post_title LIKE \'%a%\')
          OR (wp_posts.post_content LIKE \'%a%\'))
     AND ((wp_posts.post_title LIKE \'%test%\')
          OR (wp_posts.post_content LIKE \'%test%\')))

结束

相关推荐

RESTORE_CURRENT_BLOG()与MULTIME SWITCH_TO_BLOG(),然后删除$GLOBALS[‘_wp_Switched_Stack’]

与相关this answer, 哪些国家每次switch_to_blog() 你need 调用restore_current_blog() 否则,WP会认为它处于“切换”模式,并可能返回不正确的数据。我已经做了一些测试,可以确认这是一个问题。(它还回答了我在工作中遇到的一个关于文件上传URL的问题,对此我竖起大拇指。)在我的测试(详情如下)中,我发现有两种方法可以继续:始终配对switch_to_blog() 具有restore_current_blog()</使用switch_to_blog(),