Eu construí um tema para uma concessionária de carros. Cada carro é um tipo de postagem personalizado ("veículo") e possui cerca de 12 campos personalizados com itens como Marca, Modelo, Quilometragem, Tipo de combustível etc. etc.
Então, basicamente, na página inicial, quero um formulário de pesquisa que tenha listas suspensas para Make & Model e contenha marcas ou modelos disponíveis.
Também quero que ele tenha 2 opções para Ano, para que o usuário final possa selecionar "2006" e "2012" e os resultados da pesquisa contenham todos os veículos com o ano entre esses dois números.
Existe um plugin lá fora, que pode fazer isso?
Obrigado por qualquer ajuda .. isso tem me deixado louco por horas !!!!
custom-post-types
search
absdigital
fonte
fonte
Respostas:
Passo 1
Comece criando um Formulário de pesquisa avançada com o qual você deseja que seu usuário interaja com o site e salve-o com um nome (ou seja, eu o salvei como
advanced-searchform.php
- mas não o salve com -searchform.php
ele substituirá o formulário de pesquisa padrão do WordPress ):Em seguida, chame o formulário para o seu modelo da seguinte maneira:
Agora, o seu formulário de pesquisa está pronto, e agora você pode usá-lo e inserir a entrada do usuário no URL.
Passo 2
O que você só precisa é: consultar o banco de dados e consultar o tipo de postagem e seus campos personalizados conforme a consulta de pesquisa . Lembre-se de que sua consulta de pesquisa agora é o URL que você obteve após o envio do formulário. Agora peça ao WordPress para carregar sua página de resultados de pesquisa personalizada quando o formulário for enviado. Coloque a seguinte função no seu
functions.php
para que ele ative seu modelo de pesquisa personalizado em vez do padrãosearch.php
:Trouxe o código para algum lugar do WPSE (esqueci a raiz), mas há controvérsia ao usar o código acima. Mas ele realmente funciona ( desculpa esfarrapada, é claro ).
Verifique de outra maneira o @GM sugerido.
etapa 3
Crie um novo arquivo e salve-o com
advanced-search-result.php
(porque usamos esse nomefunctions.php
) e agora você está livre - obviamente. O conceito é:WP_Query()
(se sua consulta for complexa, use$wpdb
query),Uma amostra pode ser:
Então, aqui está sua coisa final. Mas ainda existem muitos desafios:
$wpdb
consulta SQL personalizada para obter resultados de pesquisa complexos e isso será puro MySQL - o WordPress não tem nada lá.page.php
(ousearch.php
) e criar esta página com base nisso.Então, você entendeu a idéia, agora é a sua vez de explorar e descobrir o caminho . Lembre-se, o caminho de todo mundo é diferente. Faça o seu, para que eu possa segui-lo. :)
fonte
WP_Query()
parâmetros de campo personalizados usando e faça o loop do resultado para mostrar os<option>
s.pre_get_posts
gancho e não um loop secundário.Embora a resposta de @ MayeenulIslam possa funcionar, acho que a maneira correta de fazer uma pesquisa avançada é usando o
pre_get_posts
gancho de ação.Etapa 1: Formulário de Pesquisa
Este passo igual a etapa 1 na outra resposta, apenas mudou o
id
doname
campo (<input type="text" ...>
usado para pesquisa de "s" , por isso vai ser usado diretamente para o maior campo de pesquisa. Salvar este código emadvanced-searchform.php
em sua pasta tema. Então, o usoget_template_part( 'advanced', 'searchform' );
de carregue-o onde deseja que apareça no seu tema:Etapa 2: adicionar filtros à consulta de pesquisa
Etapa 3: Modelo (opcional)
Com esse método, o modelo de pesquisa padrão do WordPress será usado filtrando os resultados sem a necessidade de uma consulta secundária. Se você quiser usar um modelo diferente para pesquisa avançada, poderá usar o
template_include
filtro. Por exemplo, se você deseja usar oadvanced-search-template.php
arquivo como modelo para obter resultados no formulário de pesquisa avançada:fonte