web-dev-qa-db-fra.com

La pagination donne 404 dans le modèle

J'ai une page dans ' Pages ' appelée ' News '. Cette page contient un modèle contenant mon WP_Query personnalisé paginé.

Voici le code:

<?php

    $paged = 1;
    if (get_query_var('paged')) {
      $paged = get_query_var('paged');
    } elseif (get_query_var('page')) {
      $paged = get_query_var('page');
    }

    $arguments = array (
        'posts_per_page' => 3,
        'post_type' => 'fltnews',
        'paged' => $paged,
        'meta_key' => 'publish_date',
        'orderby' => 'meta_value',
        'order' => 'DESC'
    );

    $custom_wp_query = new WP_Query($arguments);
    $temp_wp_query  = $wp_query;
    $wp_query       = NULL;
    $wp_query       = $custom_wp_query;

    echo "<ul class='content-list'>";
    if ($custom_wp_query->have_posts()) :
        while ($custom_wp_query->have_posts()) : $custom_wp_query->the_post();
            echo "<li class='content-list-item'>";
            $podsForNewsItem = pods('fltnews', $post->ID);
            $podsImage = pods_image ( $podsForNewsItem->display( 'thumbnail_picture'), 'full');
            if ($podsImage != ""){
                $podsImage = "<div class='content-list-thumbnail-picture'>" . $podsImage . "</div>";
            }

            printf("<a href='%s' class='item-container'>%s
                            <div class='content-list-body'>
                                <div class='content-list-publisher'>
                                    <div class='date-block'><span class='date'>%s</span></div>
                                </div>
                                <div class='content-list-title'>%s</div>
                                <div class='content-list-text'>%s</div>
                                <div class='content-list-link'>Les mer</div>
                            </div>
                        </a>",
                    esc_url(get_permalink($post->ID)),
                    $podsImage,
                    getDateAsNorwegian($podsForNewsItem->field('publish_date')),
                    $post->post_title,
                    $post->post_excerpt);

            echo "</li>";
        endwhile;

        wp_reset_postdata();

        previous_posts_link('Nyere &raquo;');
        next_posts_link('&laquo; Eldre nyheter', $custom_wp_query->max_num_pages);

        $wp_query = NULL;
        $wp_query = $temp_wp_query;

    endif;
    echo "</ul>";
?>

J'ai examiné les questions et réponses suivantes:

Il semble que tout le monde corrige toujours le problème 404 en ajoutant la clé et la valeur ' paginée ' au WP_Query. Cependant, cela ne fonctionne pas pour moi.

La page ' News ' se trouve à l'URL suivante:/news. Le next_posts_link donne le lien suivant:/news/page/2.

C’est celui qui me donne le numéro 404. Mes paramètres de lien permanent sont les suivants: Jour et nom.

Je ne comprends pas pourquoi je reçois le 404.

2
Anders Stensaas

J'ai fait ce que Rarst m'a dit de faire. J'ai tout d'abord cherché dans la documentation de Pods Framework . Cela a résolu mon problème.

Voici à quoi ressemble le code en ce moment.

<?php

  $params = array(
    'orderby' => 'publish_date.meta_value DESC',
    'limit' => 10
  );

  $fltNewsPods = pods( 'fltnews', $params );
  while ($fltNewsPods->fetch()) {
    echo "<li class='content-list-item'>";
    $podsForNewsItem = pods('fltnews', $fltNewsPods->display( 'id' ));
    $podsImage = pods_image ( $podsForNewsItem->display( 'thumbnail_picture'), 'full');
    if ($podsImage != ""){
        $podsImage = "<div class='content-list-thumbnail-picture'>" . $podsImage . "</div>";
    }

    printf("<a href='%s' class='item-container'>%s
                          <div class='content-list-body'>
                              <div class='content-list-publisher'>
                                  <div class='date-block'><span class='date'>%s</span></div>
                              </div>
                              <div class='content-list-title'>%s</div>
                              <div class='content-list-text'>%s</div>
                              <div class='content-list-link'>Les mer</div>
                          </div>
                      </a>",
                  esc_url(get_permalink($podsForNewsItem->display( 'id' ))),
                  $podsImage,
                  getDateAsNorwegian($podsForNewsItem->field('publish_date')),
                  $podsForNewsItem->display( 'title' ),
                  $podsForNewsItem->display( 'excerpt' ));
      echo "</li>";
  }

  echo $fltNewsPods->pagination( array(
    'type' => 'paginate',
    'prev_next' => false,
    'first_last' => false
    ) );

  echo "</ul>";
?>

C'est fondamentalement la même chose, bien que l'utilisation élevée du cadre des pods.

J'imagine que cela ne fonctionnait pas avec la version WP_Query, car il ne s'agissait pas d'un type d'article personnalisé, de sorte qu'il n'utilisait pas Wordpress Framework. Wordpress ne saurait pas comment cela devrait être paginé.

1
Anders Stensaas