Die Paginierung auf der benutzerdefinierten wp_query in WordPress führt zur 404-Fehlerseite

Lesezeit: 4 Minuten

Ich habe eine Schleife mit wp_query mit dem folgenden Code:

<?php
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();
    $wp_query->query("showposts=2&paged=$paged");
?>

<?php if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
    <?php the_title() ?>
<?php endwhile; ?>
<?php else: ?>
    <article>
        <h2><?php _e( 'Sorry, nothing to display.', 'theme' ); ?></h2>
    </article>
<?php endif;  my_pagination(); wp_reset_query()?>

mit Standard-Paginierung :

<?php 
function my_pagination()
{
    global $wp_query;
    $big = 999999999;
    echo paginate_links(array(
        'base' => str_replace($big, '%#%', get_pagenum_link($big)),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'prev_text'    => __('<i class="fa fa-chevron-left"></i>'),
        'next_text'    => __('<i class="fa fa-chevron-right"></i>'),
        'total' => $wp_query->max_num_pages,
    ));
}
?>

Die Paginierung wird auf der Seite korrekt angezeigt, aber wenn ich auf den Paginierungslink klicke, werde ich zur Fehlerseite weitergeleitet.

Habe jetzt alles probiert und keine Ahnung woran das liegen kann.

Amy Hilfe sehr geschätzt

  • Wie lautet die URL, wenn Sie den Mauszeiger über den Paginierungslink für Seite 2 bewegen?

    – Hendrik Wright

    12. März 2014 um 23:08 Uhr

  • localhost/web/main/blog/page/2 Danke

    – Dom

    13. März 2014 um 1:07 Uhr

  • Ihre Paginierungsausgabe sieht also gut aus. Das Problem muss bei Ihrer eigentlichen Abfrage liegen. Kannst du versuchen, $wp_query->query(“showposts=2&paged=$paged”); Sehen Sie dann nach, ob Sie auf Seite 2 zugreifen können

    – Hendrik Wright

    13. März 2014 um 3:11 Uhr

  • @henrywright, ich habe das getan, es gibt dann eine leere Schleife zurück. Interessant ist, dass, wenn ich Einstellung -> Lesen auf eine kleinere Menge ändere, es scheint, dass es Auswirkungen auf meine Schleife hat. Ich habe dort 5 Elemente pro Seite eingestellt. Es gibt nur 7 Beiträge und die Paginierung zeigt 3 Seiten. Scheint, dass es wp_query ignoriert, aber die dritte Seite zeigt 404. Ich bin jetzt verloren.

    – Dom

    13. März 2014 um 10:00 Uhr

  • Wenn Sie den von mir vorgeschlagenen Code entfernen: $wp_query->query("showposts=2&paged=$paged"); und ändern $wp_query = new WP_Query(); zu $wp_query = new WP_Query( 'posts_per_page=2' ); liefert das irgendwelche ergebnisse? Wenn das an Ort und Stelle ist, Ihre Paginierung sollte Arbeit

    – Hendrik Wright

    13. März 2014 um 10:44 Uhr

Hatte auch Schwierigkeiten damit 🙂 War einfacher zu suchen, als ich feststellte, dass es sich um einen falsch berechneten Beitrag pro Seitenzahl handelt, und hier ist ein Zaubertrick: (muss zu functions.php hinzugefügt werden)

function my_post_count_queries( $query ) {
  if (!is_admin() && $query->is_main_query()){
    if(is_home()){
       $query->set('posts_per_page', 1);
    }
  }
}
add_action( 'pre_get_posts', 'my_post_count_queries' );

  • Klappt wunderbar. Danke @MichalS

    – Dom

    18. März 2014 um 8:04 Uhr

  • Es ist wunderbar, dass sie so viele Hintertüren behalten haben, um die Ausgabe zu infiltrieren, und deshalb liebe ich wp 😉 +1

    – maksbd19

    21. März 2014 um 8:26 Uhr

  • Es zeigt den Paginierungslink, aber nachdem Sie auf den Link geklickt haben, wird 404 angezeigt. Bitte helfen Sie mir.

    – Suraj Khanal

    1. März 2017 um 13:03 Uhr

  • Das hat mir geholfen danke!! Ich habe nach so vielen Antworten gesucht und diese funktioniert, wenn ich posts_per_page aus meiner WP_Query nehme und stattdessen hier einklebe!!

    – Jordan Carter

    24. März 2018 um 1:25 Uhr

  • Es funktioniert nicht für “s”, um mit Schlüsselwörtern zu suchen $query->set('s',$_GET["search"]'); Hier gibt es einen 404-Fehler. können Sie bitte vorschlagen.

    – Jaydip Nimavat

    2. April 2018 um 13:36 Uhr

Post pro Seite setzen mit get post meta
Vitali Protosovitski

Hatte das gleiche Problem mit dem benutzerdefinierten Beitragstyp. Ich hatte eine Abfrage zu „Seitenvorlage“, bei der die Paginierung mit 404 kam. Ich denke, das Hauptproblem hier ist der „Slug“ des benutzerdefinierten Beitragstyps, der mit der URL „Seitenvorlage“ identisch ist. Wenn Sie beispielsweise einen benutzerdefinierten Beitragstyp-Slug „Portfolio“ und eine Seite mit demselben Namen haben, ergibt die Paginierung auf dieser Seite einen 404. Also habe ich „Slug“ einfach in „Archive-Portfolio“ geändert, und es hat geholfen

  • Beste Antwort, die ich gefunden habe 🙂 Danke !!

    – Mariusz

    13. Februar um 21:03 Uhr

Die Paginierung auf der benutzerdefinierten wp query in WordPress fuhrt zur
androidzoneus

Sie können Ihre Abfrage ändern

$wp_query= null; $wp_query = new WP_Query();
$wp_query->query("showposts=2&paged=$paged");

zu

$wp_query = new WP_Query("showposts=2");

Es werden 2 Posts pro Seite angezeigt und Sie können Ihre Seite 2 sehen und darauf zugreifen.

  • Gemäß den offiziellen Dokumenten: codex.wordpress.org/Class_Reference/WP_Query … posts_per_page (int) – Anzahl der anzuzeigenden Posts pro Seite (verfügbar seit Version 2.1, Parameter showposts ersetzt). Verwenden Sie ‘posts_per_page’=>-1, um alle Posts anzuzeigen (der Parameter ‘offset’ wird bei einem Wert von -1 ignoriert). Stellen Sie den Parameter „paged“ ein, wenn die Paginierung nach Verwendung dieses Parameters deaktiviert ist. Hinweis: Befindet sich die Suchanfrage in einem Feed, überschreibt WordPress diesen Parameter mit der hinterlegten Option „posts_per_rss“. Um das Limit erneut festzulegen, versuchen Sie es mit dem Filter „post_limits“ oder filtern Sie „pre_option_posts_per_rss“ und geben Sie -1 zurück

    – MLK.DEV

    26. Juli 2016 um 18:38 Uhr

914980cookie-checkDie Paginierung auf der benutzerdefinierten wp_query in WordPress führt zur 404-Fehlerseite

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy