web-dev-qa-db-fra.com

Pagination - Publier le contenu de la première page

J'ai déjà posté une version de ce problème plus tôt, mais après en avoir creusé davantage, je me suis rendu compte que les parties du modèle étaient un peu différentes de ce que je pensais à l'origine. J'ai également lu des questions similaires, mais la structure du code sur lequel je travaille ne correspond pas tout à fait à celle d'autres exemples.

Le thème sur lequel je travaille est construit sur mesure et ne constitue pas une révision d'un thème préexistant. Il a été construit par une agence et j'ai fini par l'adopter à la fin du contrat.

ISSUE

La section Nouvelles de notre site génère une page avec des extraits de messages et des vignettes. Au bas de la page se trouve la pagination, qui renvoie aux pages supplémentaires des articles. Le problème est que, lorsque le lien vers la deuxième page de messages est cliqué, l’URL devient /page/2 ou /page/3 mais le contenu affiché est toujours identique à la page 1.

UPDATE

Anton a pu aider à faire en sorte que la pagination fonctionne dans l’index, mais celle-ci a de nouveau surgi dans un modèle différent - Jobs. J'ai inclus la section de code pour la page job-list.php ci-dessous. Je pense que ce sera un correctif similaire, mais comme le modèle répertorie les éléments différemment, je ne sais pas comment l'aborder.

La page des publications dans le modèle est index.php et j'ai inclus le code ci-dessous. Toute aide ou conseil aux ressources est très apprécié!

job-list.php

  <?php
  global $wp_query;
  $temp_query_holder = $wp_query;
  $job_args = array('post_type' => 'site_job');
  $wp_query = new WP_Query($job_args);

  if(have_posts()){ ?>
    <div class="job-group">
      <?php

      while(have_posts()){
        the_post();

        set_query_var('included_post', $post);
        set_query_var('last_post', ($wp_query->current_post == $wp_query->post_count - 1));
        get_template_part('template-parts/short', get_post_type());
      } ?>

    </div>

    <?php the_pagination();
  }
  else {
    get_template_part('template-parts/content', 'none');
  } ?>

index.php

<?php

get_header();
$page_id = get_option('page_for_posts');
?>

<div class="header-image-wrapper">
  <?php echo SITEPages::header_image_for_page($page_id); ?>
</div>

<section class="primary news-list list-page">
  <?php get_template_part('template-parts/breadcrumbs'); ?>
  <h1 class="page-title"><?php echo get_the_title($page_id); ?></h1>

  <?php $featured_post = get_field('featured_news_post', $page_id);

  if(!empty($featured_post)){
    set_query_var('included_post', $featured_post);
    get_template_part('template-parts/short-post-featured');
  } ?>

  <div class="post-list">
    <?php
    $news_query = new WP_Query(array(
      'post__not_in' => array($featured_post->ID)
    ));

    if($news_query->have_posts()){
      foreach($news_query->posts as $i => $news_post){
        set_query_var('included_post', $news_post);
        set_query_var('last_post', ($news_query->current_post == $news_query->post_count - 1));
        get_template_part('template-parts/short-post');
      }

      the_pagination();
    }

    else {
      get_template_part('template-parts/content', 'none');
    } ?>
  </div>
</section>

<?php
get_sidebar();
get_footer();

pagination.php

<?php
$pagination = get_the_posts_pagination(array(
  'prev_next' => false,
  'end_size' => 1,
  'before_page_number' => '<span class="page-descriptor">Page </span>'
));

if(!empty($pagination)){ ?>
  <div class="pagination-container">
    <span class="prev">
      <?php previous_posts_link('<span class="icon-chevron-left" data-grunticon-embed></span>'); ?>
    </span>

    <?php
      echo $pagination;
    ?>
    <span class="next">
      <?php next_posts_link('<span class="icon-chevron-right" data-grunticon-embed></span>'); ?>
    </span>
  </div>
<?php } ?>
2
Phil

Essayez de mettre à jour le modèle index.php avec le nouveau WP_Query arg paged.

Le code devrait être:

<?php
    $paged = isset(get_query_var('paged')) ? get_query_var('paged') : 1;

    $news_query = new WP_Query(array(
      'post__not_in' => array($featured_post->ID),
      'paged' => $paged
    ));

Plus d'infos dans le codex

2
Anton Lukin