web-dev-qa-db-fra.com

La pagination ne fonctionne pas pour le formulaire de recherche personnalisé et le modèle de résultat personnalisé

J'utilise un formulaire de recherche personnalisé et un modèle personnalisé pour afficher les résultats en fonction de la solution donnée dans ici / Tout fonctionne parfaitement sauf la pagination qui ne semble pas fonctionner du tout.

Vue d'ensemble

  • Type de message personnalisé: job_listing
  • Taxonomie personnalisée: job_listing_type
  • champs personnalisés en tant que clé: _job_location

Voici le code pour le formulaire de recherche:

<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="hidden" name="search" value="advanced">

        <select id="my-select1" class="js-example-basic-single isotopeselect" data-filter-group="proyectos" multiple="multiple" name="terms[]">

        <?php foreach ($job_terms as $job_term): ?>
          <option value=".<?php echo str_replace(' ', '-', str_replace('&', 'and', html_entity_decode($job_term)));?>"><?php echo $job_term;?></option>
        <?php endforeach; ?>

        </select>    
        <button type="submit"><span>search</span></button>
    <input type="hidden" name="job_listing" value=""/>
</form>

Voici le modèle de résultat de recherche

<?php 
get_header();
$terms=array();
$all=($_REQUEST); 


if(isset($_REQUEST["terms"])){
    $myterms=$all["terms"];
    foreach ($myterms as $myterm) {
    $myterm=str_replace(".","",$myterm);
    $terms[]=$myterm;    
    }
}

if($terms){
    $tax_query[] =  array(
                        array(
                        'taxonomy' => 'job_listing_type',
                        'field' => 'name',
                        'terms' => $terms
                      ) );
}

$post_type = 'job_listing';
$paged= (get_query_var('paged' )) ? get_query_var('paged'):1;
$args         =  array(
    'paged'=>$paged,
    'post_type'=>$post_type,
    'posts_per_page'=>1, 
    'tax_query' => $tax_query,
    );
$loop = new WP_Query( $args );     
if($loop->have_posts()):?>

    <div class="my-services">
        <?php    
        while($loop->have_posts()):$loop->the_post();              
        the_title();

        endwhile;
        ?>

    </div>
<?php endif; ?>
    <div class="pagination" id="blog-pagination">
      <span class="previous" ><?php previous_posts_link( '&larr;Newer', $loop->max_num_pages  ); ?></span>
      <span class="next"><?php next_posts_link( 'Older &rarr;', $loop->max_num_pages  ); ?></span>
    </div>
    <?php wp_reset_query();?>     

<?php get_footer(); ?>

Résultat de la recherche initiale, l'URL est comme

http://example.com/?search=advanced&terms%5B%5D=.Eat&job_listing=

Après avoir frappé ensuite, l'URL devient

http://example.com/page/2/?search=advanced&terms%5B0%5D=.Eat&job_listing

mais rien ne se passe, le résultat reste le même

Je n'ai jamais fait cela auparavant, alors aidez-moi s'il vous plaît

4
aryan

j'ai vu ceci: next_posts_link

Vous devez utiliser wp_reset_postdata lorsque vous utilisez new WP_QUERY (), et cela

<div class="pagination" id="blog-pagination">
  <span class="previous" ><?php previous_posts_link( '&larr;Newer', $loop->max_num_pages  ); ?></span>
  <span class="next"><?php next_posts_link( 'Older &rarr;', $loop->max_num_pages  ); ?></span>
</div>

entrer dans if ($ loop-> have_posts ()):?> condition

1
ClodClod91