WordPress: consulta post_title O meta_query

2 minutos de lectura

avatar de usuario
usuario2874008

Estoy buscando una solución para mi problema de consulta personalizada de WordPress.

Tengo un formulario de búsqueda donde el usuario puede ingresar algún texto, este texto puede ser una palabra del post_title o un meta_value (Company ID).

Entonces, necesito buscar la cadena en post_title O el meta_key-Field “número de identificación”, pero también tengo otros parámetros de búsqueda adicionales.

Estos son mis Args para el WP_Query:

Array(
    [post_type] => company
    [pagination] => 1
    [posts_per_page] => 10
    [paged] => 1
    [meta_query] => Array
        (
            [relation] => AND
            [0] => Array
                (
                    [0] => Array
                        (
                            [key] => id-number
                            [value] => FOOBAR
                        )

                    [1] => Array
                        (
                            [key] => post_title
                            [value] => FOOBAR
                            [compare] => LIKE
                        )

                    [relation] => OR
                )

            [1] => Array
                (
                    [relation] => AND
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [key] => country
                                    [value] => USA
                                )
                            [relation] => OR
                        )
                )
        )
)

Array[meta_query][0][1] (post_title) es solo un marcador de posición; sé que no puede funcionar, pero ¿cómo puedo buscar
(id-number OR post_title) Y (all other vars...)

  • No creo que pueda usar post_title en una meta consulta, ya que no está almacenado en la tabla post_meta.

    – Chris Herbert

    5 de enero de 2015 a las 7:21

avatar de usuario
vicvicvicvic

Hacer esto con WP_Query no es directamente posible. La consulta se construye a partir de los argumentos en el monstruoso (más de 1000 líneas de largo) WP_Query::get_posts (ver wp-includes/query.php) principalmente como una larga serie de concatenaciones de AND declaraciones a un $where variable.1

Ahora, puede conectarse a una serie de filtros para personalizar cómo se construye esa variable (que contiene el SQL para la consulta). En su caso, uno de los siguientes podría ser apropiado:

  • publicaciones_buscar: Le permite cambiar la forma en que se interpretan las consultas de búsqueda (procedentes del formulario de búsqueda incorporado/estándar de WordPress). Luego, construiría manualmente su consulta where según sea necesario a partir de la consulta de búsqueda.
  • publicaciones_donde: Le permite cambiar toda la consulta where, sin embargo, para cada consulta.

Al usar el filtro, en realidad no enviaría argumentos a WP_Query y lo construiría “de la manera normal”, sino que anularía cómo se construye la consulta SQL WHERE. Es mejor que ejecute su propia consulta SQL por completo. El códice tiene un artículo. Mostrar publicaciones usando una consulta de selección personalizada que detalla cómo se puede hacer esto.


1. WP_Query no es en absoluto un ORM completo, sino una clase dedicada para tomar variables de cadena de consulta y filtrar publicaciones según esas reglas.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad