web-dev-qa-db-ja.com

フォーム選択を介して複数のカスタム分類法でフィルタリングされたカスタム投稿タイプの投稿をクエリする方法

私は異なるカスタム分類法でカスタム投稿を選択するために一種の選択メニューを作成しようとしています。私は選択部分をしましたが、私は自分の投稿を出力することができず、自分の間違いがどこにあるのか理解できません。私はとても運賃があります: - カスタム投稿タイプ: "corsi"。 - 5種類のカスタム分類法: "prodotto"、 "livello"、 "ruolo"、 "stato"。 - ラジオボタン入力とjQueryのビットを使って、フォームとして作られた選択フォーム。

フォーム部分

  <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>

そしてこのように私は投稿を出力しようとしましたが、何も表示されません:/

 <?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
                                        }


                                                        } ?>

何がおかしいのですか?

前もってありがとう、素敵な日を過ごしてください:)

リサ

1
Lisa

どうやら問題は "AND"関係にありました。今すぐコードが動作するようです。

 <?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