web-dev-qa-db-fra.com

Comment interroger des publications de type publication personnalisées filtrées par plusieurs taxonomies personnalisées via une sélection de formulaire

J'essaie de créer une sorte de menu de sélection, afin de sélectionner les publications personnalisées selon différentes taxonomies personnalisées. J'ai fait la sélection, mais je ne parviens pas à publier mon message et je ne comprends pas où sont mes erreurs. Ce que j'ai si tarif: - Type de message personnalisé: "corsi"; - 5 taxonomies douanières différentes: "prodotto", "livello", "ruolo", "stato"; - Le formulaire de sélection, sous forme de formulaire, avec entrée de bouton radio et un peu de jQuery.

La partie formulaire

  <form id="regiration_form" novalidate action="<?php echo $current_url;?>" method="post">
    <fieldset>
        <div class="form-group">
            <h1>1</h1>
            <?php

    $prodotto_terms = get_terms( 'prodotto', array(
          'orderby'    => 'date',
          'order' => 'DESC',
          'hide_empty' => 0
        ) );
    ?>
                <?php foreach( $prodotto_terms as $term ) {
                          $term_link = get_term_link( $term );
                          echo '<input type="radio" name="prodotto" value="'.$term->slug.'">'.$term->name.'<br>';
                        }       

                    ?>

        </div>
        <input type="button" name="next" class="next btn btn-info" value="Next" />
    </fieldset>
    <fieldset>
        <div class="form-group">
            <h1>2</h1>
            <?php $livello_terms = get_terms( 'livello', array(
          'orderby'    => 'date',
          'order' => 'DESC',
          'hide_empty' => 0
        ) );
    ?>
                <?php foreach( $livello_terms as $term ) {
                          $term_link = get_term_link( $term );
                          echo '<input type="radio" name="livello" value="'.$term->slug.'">'.$term->name.'<br>';
                        }       

                    ?>


                    <?php $ruolo_terms = get_terms( 'ruolo', array(
          'orderby'    => 'date',
          'order' => 'DESC',
          'hide_empty' => 0
        ) );
             ?>
        </div>
        <input type="button" name="previous" class="previous btn btn-default" value="Previous" />
        <input type="button" name="next" class="next btn btn-info" value="Next" />
    </fieldset>
    <fieldset>
        <div class="form-group">
            <h1>3</h1>
            <?php foreach( $ruolo_terms as $term ) {
                          $term_link = get_term_link( $term );
                          echo '<input type="radio" name="ruolo" value="'.$term->slug.'">'.$term->name.'<br>';
                        }       

                    ?>

                            <?php $stato_terms = get_terms( 'stato', array(
          'orderby'    => 'date',
          'order' => 'DESC',
          'hide_empty' => 0
        ) );
            ?>
                    </div>
                    <input type="button" name="previous" class="previous btn btn-default" value="Previous" />
                    <input type="button" name="next" class="next btn btn-info" value="Next" />
                </fieldset>

                <fieldset>
                    <div class="form-group">
                        <h1>4</h1>
                        <?php foreach( $stato_terms as $term ) {
                          $term_link = get_term_link( $term );
                          echo '<input type="radio" name="stato" value="'.$term->slug.'">'.$term->name.'<br>';
                        }       

                    ?>

                    </div>
                    <input type="button" name="previous" class="previous btn btn-default" value="Previous" />
                    <input type="submit" name="submit" class="submit btn btn-success" value="Submit" />
                </fieldset>
            </form>

Et voici comment j'ai essayé de publier les articles, mais rien ne s'affiche:/

 <?php    
                                if(isset($_REQUEST['submit']))
                                    { 

                                       $prodotto = $_POST["prodotto"];       
                                       $livello = $_POST["livello"];       
                                       $ruolo = $_POST["ruolo"];       
                                       $stato = $_POST["stato"]; 


                                    $soluzioni = new WP_Query( array( 
                                      'post_type' => 'corsi',
                                      'posts_per_page' => -1,
                                      'orderby' => 'title',
                                      'order'   => 'ASC',
                                      'paged' => $paged,
                                      'tax_query' => array(
                                        'relation' => 'AND',
                                         array(
                                           'taxonomy' => 'prodotto',
                                           'field' => 'slug',
                                           'terms' => $prodotto 
                                         ),
                                         array(
                                           'taxonomy' => 'livello',
                                           'field' => 'slug',
                                           'terms' => $livello
                                         )
                                      ) ) );


                                        if ( $soluzioni->have_posts() ) {
                                            echo '<ul>';
                                            while ( $soluzioni->have_posts() ) {
                                                $soluzioni->the_post();
                                                echo '<li>' . get_the_title() . '</li>';
                                            }
                                            echo '</ul>';

                                            wp_reset_postdata();
                                        } else {
                                            // no posts found
                                        }


                                                        } ?>

Qu'est-ce que je fais mal?

Merci d'avance, passez une bonne journée :)

Lisa

1
Lisa

Apparemment, le problème était dans la relation "ET". Le code semble maintenant fonctionner:

 <?php    
     if(isset($_REQUEST['submit']))
                { 
                    $prodotto = $_POST["prodotto"];       
                    $livello = $_POST["livello"];       
                    $ruolo = $_POST["ruolo"];       
                    $stato = $_POST["stato"]; 



                    $args = array( 
                            'post_type' => 'corsi',
                            'posts_per_page' => -1,
                            'orderby' => 'title',
                            'order'   => 'ASC',
                            'tax_query' => array(

                                array(
                                    'taxonomy' => 'prodotto',
                                    'field' => 'slug',
                                    'terms' => $prodotto,
                                         ),
                                array(
                                    'taxonomy' => 'livello',
                                    'field' => 'slug',
                                    'terms' => $livello,
                                         ),
                                 array(
                                    'taxonomy' => 'ruolo',
                                    'field' => 'slug',
                                    'terms' => $ruolo,
                                         ),
                              array(
                                    'taxonomy' => 'stato',
                                    'field' => 'slug',
                                    'terms' => $stato,
                                         ),


                                      ) 
                                    );
                    $soluzioni = new WP_Query($args);

                                if ( $soluzioni->have_posts() ) {
                                        echo '<ul>';
                                            while ( $soluzioni->have_posts() ) {
                                                $soluzioni->the_post();
                                                                    echo '<li>' . get_the_title() . '</li>';
                                                                            }
                                                        echo '</ul>';

                                                            wp_reset_postdata();
                                                                } else 
                                                                    {
                                                                           echo '<br/> OPPALLA no post';
                                                                    }




                             }
1
Lisa