web-dev-qa-db-fra.com

Comment puis-je remplir un élément sélectionné avec les termes d'une taxonomie personnalisée et filtrer les résultats de publication?

D'accord, alors, tout d'abord, j'ai besoin que vous vérifiiez ce fil de fer pour que vous puissiez voir ce que j'essaye d'accomplir: Fil de fer

Ce que j'ai fait jusqu'à présent est la suivante:

  1. J'ai créé un type d'article personnalisé pour des adresses individuelles.
  2. J'ai créé une taxonomie personnalisée hiérarchique dans laquelle les "catégories parentes" sont des États et les "catégories enfants" sont des villes.
  3. J'ai utilisé le code suivant pour remplir le premier élément de sélection:

    <select name="states" id="states" class="etc">
    <?php  $terms = get_terms('area', 'parent=0');
        $count = count($terms);
        if ( $count > 0 ){
            foreach ( $terms as $term ) {
                echo '<option value="' . $term->name . '">' . $term->name . '</option>';
            }
        }
    ?>
    </select>
    

Alors voici ce que j'ai besoin de savoir:

  1. Comment renseigner le deuxième élément de sélection en fonction du parent sélectionné dans le premier?
  2. Comment utiliser ces éléments de sélection pour filtrer mes publications personnalisées?
1
Ezequiel

Êtes-vous familier avec jQuery? Vous voudrez peut-être poster le terme sur admin-ajax et utiliser la réponse pour renseigner la deuxième sélection.

Voici la documentation du codex: http://codex.wordpress.org/AJAX_in_Plugins

Un exemple lâche pour votre situation:

$first_term = $('#states');
$name = $first_term.children('option:selected').text();
    var data = {
            action: 'tag_slug',
            slug: $slug
        };

    var ajaxurl = 'wp-admin/admin-ajax.php';
    $.post(ajaxurl, data, function(response) {
        $('#city').empty().append(response);
    });

Vous construirez les options de la même manière que celle indiquée dans votre rappel de réponse AJAX, de sorte que ce soit ce qui est retourné et ce qui est ajouté à la sélection de ville.

Notez la section "Ajax du côté de la visionneuse" du lien de codex ci-dessus pour vous assurer que cela fonctionne pour les utilisateurs non connectés.

1
5t3ph