entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Filtrar posts a través de múltiples taxonomías en WordPress

Saludos, he estado dándole vuelta a cómo solucionar un problema pero me encuentro un poco bloqueado, trata sobre lo siguiente.
En Wordpress, necesito filtrar la lista de posts a través de una serie de taxonomías. Por ejemplo:

Taxonomía 1 = Ciudades
Taxonomía 2 = Cafeterías

Al seleccionar de la lista "Ciudades" mostrar una segunda lista con las cafeterías disponibles dentro de esta ciudad.

El ejemplo anterior era solo para ilustrar, necesitaría poder filtrar los posts a través de una cadena más larga de taxonomías separadas. ¿Alguien puede decirme la mejor forma de hacerlo?

Gracias

2 Respuestas

1voto

Peter Puntos150470

Creo que lo mas sencillo es que utilices algún plugin que ya hace eso. No especificas mas detalles de uso ni código que tengas realizado, entonces supongo que solo era cuestión de buscar un plugin.

Si me equivoco, por favor especifica los detalles.

Saludos.

0voto

Seldon comentado

Saludos Peter, creo que me expresé mal.
Sé cómo filtrar los posts a través de las taxonomías por medio del WP_Query, por ejemplo:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'ciudades',
            'field'    => 'slug',
            'terms'    => array( 'cali'),
        ),
        array(
            'taxonomy' => 'cafeterias',
            'field'    => 'slug',
            'terms'    => array('cafeteria1'),
        ),
    ),
);
$the_query = new WP_Query( $args );

Sé que la consulta anterior me devolvería los posts con las cafeterias en "cali" y marcados con el nombre "cafeteria1"

A lo que me refería es a cómo mostrar dinamicamente dos dropdowns que tengan un funcionamiento así:

  1. Dropdown1 que muestre una lista de ciudades (todos los términos dentro de la taxonomía "ciudades"), y poder seleccionar uno de estos términos, supongamos "cali".

  2. Al seleccionar "cali" del dropdown1, mostrar un segundo dropdown que muestre las cafeterias existentes SOLO dentro de "cali".

Mi problema está en el punto 2.

Si listara todos los términos de la taxonomía "cafeterias", se mostrarían todas las cafeterías que están en todas las ciudades y no solo las que están dentro de cali.

Sé que por medio de la función "get_categories();" puedo mostrar los elementos hijos de un termino en una taxonomía. Pero esto me serviría si la lista de cafeterias fueran hijos de "cali" y no es el caso, si no que las cafeterias son términos de una taxonomía diferente.

Entonces, ¿hay forma de resolver este problema?

Gracias.

0voto

Peter comentado

El plugin que te puse hace exactamente eso. ¿No te funciona por alguna razón? ¿Necesitas otra cosa o algo en específico?

Saludos.

0voto

Seldon comentado

Saludos Peter,

En realidad el plugin no trabaja en mi instalación de prueba (WP 4.1 y un theme vacío usando undercores. Lo instalé normalmente, seguí las indicaciones y no veo que se ejecute nada nuevo en el index.

Y no sé si esté mal, pero según la descripción, el plugin filtra los posts a través de los términos de las taxonomías ¿no?.

Lo que yo necesito solo es que un segundo dropdown en el index.php muestre los términos de una taxonomía de acuerdo a si los posts con ese termino también comparten termino de otra taxonomia marcada en el dropdown1. Es difícil de explicar en realidad, pero esa es la idea. Por eso había dado el ejemplo de las cafeterías para que se entendiera mejor.

Digamos que ya sé como filtrar los posts con el WP Query, lo que quiero es que el segundo dropdown sea "inteligente" para solo mostrar los términos útiles de la taxonomía, y no la lista entera.

Muchas gracias

0voto

develoteca Puntos200

Puedes integrar algo como esto, eso si tienes que usar ajax para la petición, adjunto código con shortcode disponible esto seria un plugin que llame a otra consulta en este caso se utilizo wp_dropdown_categories para mostrar la lista a seleccionar, adjunto código de un plugin, solo necesita algunas modificaciones pero es para tener una idea:

    <?php /*
Plugin Name: Cascada category
*/
add_shortcode( 'foobar', 'pluginname_ajaxurl' );
function pluginname_ajaxurl() {
wp_dropdown_categories( 'show_count=1&hierarchical=1&class=ciudades' ); 
?><script>
        var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
        jQuery(document).ready(function($) {
        jQuery( ".ciudades" ).change(function() {
            var data = {
                action: "aCatGetChildren",
                parent: jQuery(this).val()
            };
            jQuery.post(ajaxurl, data, function(response) {
                jQuery( ".ciudades" ).after(response);
            });
        });
        });
</script><?php 
}
add_action('wp_ajax_aCatGetChildren', 'aCatGetChildren');
function aCatGetChildren(){
wp_dropdown_categories( 'show_count=1&hierarchical=1&class=cafes&child_of='.$_POST['parent']);
exit();
}
?>

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta