Mostrar elementos de taxonomía personalizada de WordPress en función de un elemento seleccionado de otra taxonomía personalizada

5

Permítame explicarle el problema con el que estoy tratando:

Tengo 2 taxonomías personalizadas. Uno se llama "estado" y el otro se llama "nombre del país".

En " estado ", he enumerado todos los estados en los EE. UU.
En " thetown ", he enumerado las principales ciudades de los EE. UU.

Para cada taxonomía tengo sus artículos mostrados en un menú desplegable

¿Entiendes a dónde voy con esto? : D Necesito poder mostrar los elementos en "tiempo de espera" según el estado seleccionado en la taxonomía "estado"

Por ejemplo , si el usuario selecciona "Michigan" (en la taxonomía llamada "estado"), la página se actualiza automáticamente, y en el siguiente menú desplegable, en la taxonomía llamada "thetown", Solo tengo las ciudades "Detroit", "Grand Rapids", "Warren".

Si el usuario cambia de opinión y selecciona "Texas", la página se actualiza automáticamente y en el siguiente menú desplegable, en la taxonomía llamada "thetown", solo tengo las ciudades "Houston", "San Antonio", " Dallas ".

Espero que mi explicación tenga sentido! ¿Puedes pensar en una lógica mediante la cual pueda lograr esto?

Saludos cordiales, Gabriela

    
pregunta Gabriela 24.04.2012 - 21:44

1 respuesta

4

¿Por qué no hacer los términos de los niños de las ciudades de cada estado? La taxonomía podría ser la ubicación:

Consulte Cita detallada de MikeSchinkel y taxonomías jerárquicas correspondientes .

Unasoluciónmáselegantequeactualizarlapáginaenelestadoseleccionadoseríacargarlostérminossecundarios"prefabricados" utilizando ajax y % co_de La función% o la consulta personalizada $ wpdb que se describe a continuación.

Pase el estado seleccionado usando jQuery a la función de PHP de fondo que recorre una serie de términos secundarios para construir su segundo menú desplegable.

Aquí hay un ejemplo rápido usando una consulta personalizada de $ wpdb:

función de backend PHP:

add_action( 'wp_ajax_nopriv_get_child', 'ajax_get_children' );

function ajax_get_children() {
        global $wpdb;
        $parent = $_POST['parent'];
        $child_string = "";
        $results = $wpdb->get_results ( "SELECT t.term_id, t.name FROM $wpdb->term_taxonomy tt, $wpdb->terms t, $wpdb->term_taxonomy tt2 WHERE tt.parent = $parent AND tt.taxonomy = 'category' AND t.term_id = tt.term_id AND tt2.parent = tt.term_id GROUP BY t.term_id, t.name HAVING COUNT(*) > 0 ORDER BY t.term_order ASC" );
        foreach ( $results as $row ) {
            $child_string = $child_string . "<option value='$row->term_id'>$row->name</option>";
        }
        echo $child_string;

        die(1);

    }

jQuery:

jQuery(document).ready(function() {

    jQuery("#div-id-of-dropdown").select(function(){

        jQuery( "#loading-animation").show();
        var termID = jQuery("#parent-term :selected").val();


        jQuery.ajax({
            type: 'POST',
            url: ajaxurl,
            data: {"action": "get_child", parent: termID },
            success: function(response) {
                jQuery("#empty-div-to-load-child-terms").html(response);
                jQuery("#loading-animation").hide();
                return false;

            }
        });
    });
});

Tendrá que modificar su html para que coincida con el código anterior. Cuando se selecciona el estado, WordPress cargará las "ciudades" secundarias

Editar

Olvidé mencionar que la variable ajaxurl en jQuery no se definirá. Lea sobre utilizando AJAX en complementos para obtener el método junto con otra información útil.

    
respondido por el Chris_O 03.05.2012 - 07:50

Lea otras preguntas en las etiquetas