Compreender WordPress Search

Estou tentando criar uma pesquisa personalizada semelhante à de totaljobs.com, mas através de um site WordPress. Essencialmente, eu poderia pesquisar os termos de pesquisa e a localização simultaneamente.

A maneira como ele está funcionando agora é que existe um campo de termo de pesquisa e, em seguida, há também uma pesquisa de localização. São dois campos separados. Para o campo do termo de pesquisa, estou usando a pesquisa padrão do WordPress e, para a pesquisa de localização, estou levando a latitude e longitude dos trabalhos e uma configuração de raio e executando-os através da API do Google Maps. Como você pode ver, o processo de pesquisa é bastante diferente em ambas as pesquisas.

Eu adicionei campos personalizados às postagens para latitude e longitude e estou consultando no database para minha pesquisa. O que não sei é como funciona a pesquisa padrão do WordPress. Está procurando no campo post_content e post_title, etc.? Não consigo encontrar o código do lado do servidor para investigar porque o search.php é mais um código de loop genérico.

Descobri que $ s é a variável global para o termo de pesquisa, mas não consigo encontrar onde essa variável está sendo processada e estou interessado em como o database usa essa variável porque acho que vou precisar construir em torno da pesquisa atual do WordPress informações.

Agradeço a ajuda. Obrigado!

Solutions Collecting From Web of "Compreender WordPress Search"

A busca padrão é tratada pelo WP_Query principalmente por um método chamado parse_search() , que é acionado pelo parâmetro s . Você pode pesquisar a fonte de WP_Query para is_search e juntar alguns outros bits e peças.

Ou você pode simplesmente criar uma consulta …

 $s = new WP_Query(array('s' => 'test')); 

… despeje o SQL …

 var_dump($s->request); 

… e lê-lo.

 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 

Você deve ver que, por padrão, você obtém uma consulta LIKE sobre o título e o conteúdo. As buscas “Sentence” são quebradas assim:

 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%')))