He creado un tema para un concesionario de automóviles. Cada automóvil es un tipo de publicación personalizado ("vehículo") y tiene alrededor de 12 campos personalizados con elementos como Marca, Modelo, Kilometraje, Tipo de combustible, etc.
Básicamente, en la página de inicio, quiero un formulario de búsqueda que tenga listas desplegables para Marca y modelo y que contenga todas las Marcas o Modelos disponibles.
También quiero que tenga 2 opciones para Año, para que el usuario final pueda seleccionar "2006" y "2012" y los resultados de búsqueda contengan todos los vehículos con el año entre esos dos números.
¿Hay algún complemento que pueda hacer esto?
Gracias por cualquier ayuda ... esto me ha estado volviendo loco por horas !!!!
custom-post-types
search
absdigital
fuente
fuente
Respuestas:
Paso 1
Comience por hacer un Formulario de búsqueda avanzada con el que desea que su usuario interactúe con el sitio web y lo guarde con un nombre (es decir, lo guardé como
advanced-searchform.php
, pero no lo guarde con,searchform.php
luego reemplazará el formulario de búsqueda predeterminado de WordPress ):Luego llame al formulario a su plantilla de la siguiente manera:
Ahora su formulario de búsqueda está listo, y ahora puede usar el formulario de búsqueda y puede tomar la entrada del usuario en la URL.
Paso 2
Lo que solo necesita es: consultar la base de datos y consultar el tipo de publicación y sus campos personalizados según la consulta de búsqueda . Recuerde que su consulta de búsqueda ahora es la URL que obtuvo después de enviar el formulario. Ahora solicite a WordPress que cargue su página de resultados de búsqueda personalizada cuando se envíe el formulario. Coloque la siguiente función en su
functions.php
para que habilite su plantilla de búsqueda personalizada en lugar de la predeterminadasearch.php
:Traje el código en algún lugar de WPSE (olvidé la raíz), pero hay controversia al usar el código anterior. Pero en realidad funciona ( excusa poco convincente, por supuesto ).
Verifique otra forma @GM sugerido.
Paso 3
Crea un nuevo archivo y guárdalo con
advanced-search-result.php
(porque usamos este nombrefunctions.php
) y ahora eres libre, obviamente. El concepto es:WP_Query()
(si su consulta es compleja, use una$wpdb
consulta),Una muestra puede ser:
Entonces, aquí está tu última cosa. Pero aún hay muchos desafíos:
$wpdb
consultas SQL personalizadas para resultados de búsqueda complejos y eso será puro MySQL: WordPress no tiene nada allí.page.php
(osearch.php
) y hacer esta página sobre la base de eso.Entonces, tienes la idea, ahora es tu turno de explorar y descubrir el camino . Recuerde, el camino de todos es diferente. Haz el tuyo para que pueda seguirte. :)
fuente
WP_Query()
usando parámetros de campo personalizados y repita el resultado para mostrar el<option>
s.pre_get_posts
gancho y no un bucle secundario.Aunque la respuesta de @ MayeenulIslam podría funcionar, creo que la forma correcta de hacer una búsqueda avanzada es usar el
pre_get_posts
gancho de acción.Paso 1: Formulario de búsqueda
Este paso igual al paso 1 en la otra respuesta, sólo cambió el
id
delname
campo (<input type="text" ...>
utilizado para la búsqueda de "s" , por lo que se puede utilizar directamente para que el campo de búsqueda. Guardar este código enadvanced-searchform.php
virtud de su carpeta de temas. Entonces, el usoget_template_part( 'advanced', 'searchform' );
de cárguelo donde quiera que aparezca en su tema:Paso 2: agregue filtros a la consulta de búsqueda
Paso 3: plantilla (opcional)
Con este método, la plantilla de búsqueda predeterminada de WordPress se usará para filtrar los resultados sin la necesidad de una consulta secundaria. Si desea usar una plantilla diferente para la búsqueda avanzada, puede usar el
template_include
filtro. Por ejemplo, si desea utilizar eladvanced-search-template.php
archivo como plantilla para los resultados del formulario de búsqueda avanzada:fuente