• ResueltoModerador almendron

    (@almendron)


    Antecedentes:

    1. He creada una taxonomía llamada «Periódico» (slug: «periodico). Sus datos se almacenan en la tabla «xx_terms».
    2. A dicha taxonomía se le ha añadido un campo llamado «Lenguaje» (slug: lenguaje) cuyos valores se guardan en la tabla «xx_termmeta».

    Quiero mostrar determinadas entradas en función del valor del campo «lenguaje» y para lo cual acudo a «tax_query»:

    tax_query' => array(
    	array(
    	'taxonomy' => 'periodico',
    	'field'    => 'xxxxxxx',
    	'terms'    => 'valor a filtrar'
    	)
    )

    El problema está en que 'field' solo admite 'term_id', 'name' o 'slug', es decir, los campos que por defecto se crean en la tabla «xx_terms» cuando registramos una taxonomía.

    La pregunta, por tanto, es la siguiente:

    ¿Cómo puedo añadir a esa consulta una condición basada en el campo «lenguaje»? Éste está almacenado en la tabla «xx_termmeta» que se relaciona con la tabla «xx_terms» a través del campo «term_id» de la taxonomía.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Puedes probar a meter una meta_query del termmeta dentro de la taxonomía periodico. Algo así:

    tax_query' => array(
        array(
    	'taxonomy' => 'periodico',
    	'field'    => 'xxxxxxx',
    	'terms'    => 'valor a filtrar'
            'meta_query' => array(
                array(
                    'key' => 'leguaje',
                    'value' => 'valor del lenguaje',
                    'compare' => '=',
                ),
            ),
        ),
    )

    De esta forma debería darte los post que tengan la taxonomía ‘periodico’ con el valor ‘valor a filtrar’ y dentro de ellos los que tengan el term ‘lenguaje’ con el valor del lenguaje.

    Moderador almendron

    (@almendron)

    Buenas tardes, David.

    Creo que eso no he probado. Lo miro y te digo algo.

    Gracias.

    Moderador almendron

    (@almendron)

    Una pena pero no funciona.

    Moderador almendron

    (@almendron)

    La solución que he encontrado ha sido

    1. Recuperar mediante una meta_query los «ids» de los periódicos (taxonomía) que en «lenguaje» (campo añadido a la taxonomía) tienen el valor de «en». Resultado que se almacena en la variable «$terms».
    2. Una nueva consulta donde ‘terms’ de la tax_query es igual a «$terms».

    Si alguien estuviera interesado en el código completo, que me lo diga y lo pongo.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘Consulta a la tabla «xx_termmeta»’ está cerrado a nuevas respuestas.