web-dev-qa-db-de.com

Die Paginierung ergibt 404 in der Vorlage

Ich habe eine Seite in 'Pages' mit dem Namen 'News'. Diese Seite enthält eine Vorlage mit meinem ausgelagerten benutzerdefinierten WP_Query.

Hier ist der 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>";
?>

Ich habe mir folgende Fragen und Antworten angesehen:

Es scheint, dass jeder das 404-Problem immer behebt, wenn der Schlüssel 'paged' und der Wert zum WP_Query hinzugefügt werden. Dies funktioniert jedoch nicht für mich.

Die Seite 'News' befindet sich unter folgender URL:/news. Der next_posts_link enthält den folgenden Link:/news/page/2.

Dies ist derjenige, der mir den 404 gibt. Meine Permalink-Einstellungen lauten wie folgt: Tag und Name.

Ich verstehe nicht, warum ich den 404 bekomme.

2
Anders Stensaas

Ich habe getan, was Rarst mir gesagt hat. Zuerst habe ich mich in der Pods Framework Dokumentation umgesehen . Das hat mein Problem gelöst.

So sieht der Code jetzt aus.

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

Es ist im Grunde das gleiche, obwohl die Verwendung des Pod-Frameworks hoch ist.

Ich vermute, dass dies mit der WP_Query-Version nicht funktioniert hat, da dies kein benutzerdefinierter Beitragstyp war und daher nicht das Wordpress Framework verwendet wurde. Wordpress würde nicht wissen, wie diese paginiert werden sollten.

1
Anders Stensaas