Wordpress分页无法使用过滤器

时间:2015-05-13 05:58:53

标签: wordpress pagination

我的wordpress分页存在问题。我有一个查询,它会生成帖子列表:

 $args = array('post_type' => 'post', 'post__in' => $wynik, 'cat' => 10,'paged' => $paged);
 $the_query=new WP_Query( $args );

其中$wynik是一个包含帖子ID的数组。此数组是基于过滤器创建的,用户可以使用过滤器过滤帖子。

当没有使用过滤器时,分页工作正常,因此显示查询中的所有帖子。但是当我使用一些过滤器并希望在自定义字段中显示具有特定值的帖子时,分页工作很奇怪。我的查询工作正常,我可以在自定义字段中显示具有特定值的帖子,但是分页仍然认为查询已满,所以即使我只有5个结果,分页仍然存在,当我点击第二页时它带我到帖子的第二页并丢失了我的过滤器。

这一切都在类别页面上。我的过滤器形式看起来像这样(它是它的一部分):

 <form role="form" action="<?php echo esc_url( home_url( '/' ) ); ?>?cat=10" method="post" id="formFiltr">
                            <div class="filter" id="skipfilter">
                                <div class="row">
                                    <div class="large-18 columns">
                                            <h3>Użyj filtrów, aby szybko odnaleźć interesujący Cię nabór:</h3>
                                    </div>
                                </div>
                <div class="row">
                    <div class="large-18 columns">
                        <span style="line-height: 30px; display: block;" class="filter-title">Pokaż według</span>
                            <div class="row">
                                <div class="large-18 columns">
                                    <label for="wszystkie-nabory" title="Zaznacz, aby wyświetlić tylko ogłoszenia o naborach wniosków">
                                        <input type="radio" value="4" onchange="" id="wszystkie-nabory" name="ogloszenie" onclick="this.form.submit();" <?php if (($_POST['ogloszenie']) == 4) echo 'checked';?>>
                                        Ogłoszenia o naborach wniosków
                                    </label>
                                </div>
                                <div class="large-18 columns">
                                    <label for="tylko-wyniki">
                                        <input type="radio" value="5" onchange="" id="tylko-wyniki" title="Zaznacz, aby wyświetlić tylko wyniki naborów wniosków" name="ogloszenie" onclick="this.form.submit();" <?php if (($_POST['ogloszenie']) == 5) echo 'checked';?>>
                                        Tylko wyniki naborów wniosków
                                    </label>
                                </div>
                            </div>
                        </div>
                    </div>
            <div class="row">              
                            <div class="large-18 small-9 columns">
                                <label class="filter-title" for="filter_Temat">Temat</label>
                                    <?php 
                                    $wynikiQS = get_custom('wnioski_tematy');
                                    $wynikiQS = explode('|',$wynikiQS);

                                    ?>
                                    <select class="help MIRFiszkaFiltryTematNaboru" onchange="this.form.submit();" id="filter_Temat" name="temat">
                                        <option style="padding-left:15px;" value=""> Wszystkie </option>
                                        <?php  foreach ( $wynikiQS as $wynikQS ) {
                                            $wynikQS = (string)$wynikQS;
                                            if (($_POST['temat']) == $wynikQS) echo '<option value="'.$wynikQS.'" class="filterItem" selected>'.$wynikQS.'</option>';
                                            else echo '<option value="'.$wynikQS.'" class="filterItem">'.$wynikQS.'</option>';
                                        } ?>
                                    </select>

                            </div>
                            <div class="large-18 small-9 columns">
                                <label class="filter-title" for="filter_Wojewodztwo">Priorytet</label>
                                <?php 
                                    $wynikiQS1 = get_custom('wnioski_priorytety');
                                    $wynikiQS1 = explode('|',$wynikiQS1);
                                    ?>
                                    <select class="help MIRFiltryWojewodztwo"  onchange="this.form.submit();" id="filter_Wojewodztwo" name="priorytet">
                                        <option style="padding-left:15px;" value=""> Wszystkie </option>
                                           <?php foreach ( $wynikiQS1 as $wynikQS ) {
                                            if (($_POST['priorytet']) == $wynikQS) echo '<option value="'.$wynikQS.'" class="filterItem" selected>'.$wynikQS.'</option>';
                                            else echo '<option value="'.$wynikQS.'" class="filterItem">'.$wynikQS.'</option>';
                                        }?>
                                    </select>
                            </div>
                            <div class="large-18 small-9 columns">
                                <label class="filter-title" for="filter_Program">Działanie</label>
                                <?php 
                                    $wynikiQS2 = get_custom('wnioski_dzialania');
                                    $wynikiQS2 = explode('|',$wynikiQS2);
                                    ?>
                                    <select class="help MIRFiszkaFiltryProgram"  onchange="this.form.submit();" id="filter_Program" name="dzialanie">
                                        <option style="padding-left:15px;" value=""> Wszystkie </option>
                                             <?php foreach ( $wynikiQS2 as $wynikQS ) {
                                            if (($_POST['dzialanie']) == $wynikQS) echo '<option value="'.$wynikQS.'" class="filterItem" selected>'.$wynikQS.'</option>';
                                            else echo '<option value="'.$wynikQS.'" class="filterItem">'.$wynikQS.'</option>';
                                        }?>
                                    </select>
                            </div>
            </div>

生成$wynik

///////////////// temat       

                                if (!empty($_POST['temat'])) { 
                                    $temat = trim($_POST['temat']); // usuwamy spację z początku i końca, żeby działało zapytanie!!!!
                                    $resultsT = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE meta_key = "temat" AND meta_value = "'.$temat.'"', OBJECT );
                                    if (!empty($resultsT))
                                    {
                                        $i = 0;
                                        foreach ( $resultsT as $result ) {$wynikQ[$i] = $result->post_id; $i++;}
                                        $wynik2 = $wynikQ;  //szukanie elementów wspolnych dla wojewodztwa i wynik/ogloszenie
                                    }
                                    else $wynik2 = array(); 
                                }
                                else $wynik2 = $wynikr; //podstawianie pełnej tabiicy jesli nie ma wynikow wyszukiwania




                            ///////////////// dzialanie   

                                if (!empty($_POST['dzialanie'])) { //sprawdzanie wojewodztwa
                                $dzialanie = trim($_POST['dzialanie']);
                                        $resultsD = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE meta_key = "dziaania" AND meta_value = "'.$dzialanie.'"', OBJECT );
                                        if (!empty($resultsD))
                                        {
                                        $i = 0;
                                        foreach ( $resultsD as $result ) {$wynikQ[$i] = $result->post_id; $i++;}
                                        $wynik3 = $wynikQ;  //szukanie elementów wspolnych dla wojewodztwa i wynik/ogloszenie
                                        }
                                        else $wynik3 = array(); 
                                     }  
                                else $wynik3 = $wynikr; //podstawianie pełnej tabiicy jesli nie ma wynikow wyszukiwania



                            ////////////////// priorytet
                                if (!empty($_POST['priorytet'])) { //sprawdzanie wojewodztwa
                                $priorytet = trim($_POST['priorytet']);
                                    $resultsP = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE meta_key = "priorytet" AND meta_value = "'.$priorytet.'"', OBJECT );
                                    if (!empty($resultsP))
                                    {
                                        $i = 0;
                                        foreach ( $resultsP as $result ) {$wynikQ[$i] = $result->post_id; $i++;}
                                        $wynik1 = $wynikQ; //szukanie elementów wspolnych dla wojewodztwa i wynik/ogloszenie
                                    }
                                   else $wynik1 = array();

                                }  
                                else $wynik1 = $wynikr; //podstawianie pełnej tabiicy jesli nie ma wynikow wyszukiwania

$wynik = array_intersect($wynikr,$wynik1, $wynik2, $wynik3, $wynik4, $wynik5, $wynik6, $wynikData);

并查询:

if (!empty($wynik))
                                   {
                                   $args = array('post_type' => 'post', 'post__in' => $wynik, 'cat' => 10,'paged'   => $paged);
                                   $the_query=new WP_Query( $args );
                                   $data=serialize($the_query); 
                                   $encoded=htmlentities($data);
                                        if ( $the_query->have_posts() ) : ?>
                                            <section class="large-12 columns applications-content" aria-relevant="all" aria-atomic="true" aria-live="assertive">
                                                <div id="inp">
                                                    <h2 class="filter-headline">      
                                                        Dostępne <b><?php echo $the_query->found_posts;?> ogłoszeń naborów wniosków</b> ze wszystkich kategorii<br>
                                                    </h2>
                                                    <ul id="applications-list">
                                                        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                                                        <?php $meta = get_post_meta( get_the_ID() ); 
                                                        //print_r($meta);
                                                        $program = $meta['program'][0];
                                                        $dzialanie = $meta['dzialanie'][0];
                                                        $url = get_the_permalink();
                                                        $dataOD = $meta['termin_naboru_wniosku_rozpoczcie'][0];
                                                        $dataDO = $meta['termin_naboru_wniosku_zakoczenie'][0];
                                                        ?>
                                                        <!-- Właściwe wyniki wyszukiwania -->
                                                        <li class="row">
                                                            <div class="large-18 columns">
                                                                <div onclick="<?php echo $url;?>';" style="border-color: #d60582" class="info">
                                                                    <div>
                                                                        <?php $nr_p = explode(' ',$program);
                                                                            echo $program;
                                                                        ?>
                                                                        <strong class="small">
                                                                            <?php $nr_d = explode(' ',$dzialanie);
                                                                            echo $nr_d[0];
                                                                            ?>
                                                                        </strong>
                                                                    </div>
                                                                 </div>
                                                                 <div class="right-info">
                                                                    <a class="title" href="<?php echo $url;?>"><?php echo get_the_title();?></a>
                                                                    <p>
                                                                        <span class="status">
                                                                            <?php
                                                                            if ($dataOD > $today) $status = 'Planowany';
                                                                            if ($dataDO < $today) $status = 'Zakończony';
                                                                            if (($dataOD <= $today) && ($dataDO >= $today)) $status = 'Aktualny';
                                                                            echo $status;    ?>
                                                                        </span>
                                                                        <span aria-label="Data naboru wniosków" class="date">
                                                                            <i class="icon ico-blackclock"></i>
                                                                            <span>od</span>
                                                                            <span> <?php echo $dataOD;?></span>
                                                                            <span>do</span>
                                                                            <span> <?php echo $dataDO;?></span>
                                                                        </span>
                                                                    </p>
                                                                 </div>
                                                             </div>  
                                                         </li>      
                                                        <?php endwhile; ?>
                                                     </ul>
                                                    <ul class="pager pagenav">
                                                        <?php wp_pagenavi(); ?>
                                                    </ul>
                                                    </div> <!-- #inp -->
                                                    </section>
                                                    <?php wp_reset_postdata(); ?>

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:0)

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('post_type' => 'post', 
              'post__in'  => $wynik, 
              'cat'       => 10,
              'paged'     => $paged
             );
 $the_query=new WP_Query( $args );

尝试这个。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

这可能是你错过的重要部分。