Klick auf next_posts_link() führt immer zu denselben Posts

  • Liebe Freunde der Wordpresse,
    ich möchte eigentlich nur eine Art Archivseite als Startseite, auf der immer die zwei aktuellsten Posts gezeigt werden, und ein Klick auf "Older Entries" die zwei nächstälteren Posts zeigt. Ich nahm an, das sei Standard, bin aber gerade etwas ratlos.

    Ich habe diesen eigentlich sehr überschaubaren Code direkt aus dem Codex kopiert http://codex.wordpress.org/Function_Reference/next_posts_link und zwischen Header und Footer gesetzt. Ich bekomme die zwei aktuellsten Posts gezeigt, ein Klick auf "Older Entries" verweist allerdings auf die URL ...page/2/ und zeigt dieselben Posts wie zuvor.

    Bei Settings > Reading > "Blog pages show at most" habe ich "2" eingetragen, bei "Syndication feeds show the most recent" auch "2". Das ist der Code:



    Und das ist die Seite http://www.conceptualisms.org

    Google hat bisher nicht geholfen, ich habs auch mit ganz anderen Loops probiert (get_posts()) nach dieser Anleitung http://wordpress.stackexchange.com/questions/1753…ts-vs-get-posts versucht. Es half nichts. Ich würde mich sehr über eure Hilfe freuen!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Zitat

    // set the "paged" parameter (use 'page' if the query is on a static front page)

    hast du das schon probiert?

    was wird angezeigt, wenn du als test die [FONT=courier new][COLOR=#0000ff]$paged [/COLOR][/FONT]variable ausdruckst, zB mit

    [FONT=courier new][COLOR=#0000ff]echo $paged;
    [/COLOR][/FONT]

  • Hallo alchymyth,
    ich hab es nun hier eingetzt

    PHP
    <?php
    // usage with max_num_pages
    next_posts_link( 'Older Entries', $wp_query->max_num_pages );
    previous_posts_link( 'Newer Entries' );
    ?>
    
    
    <?php echo $paged; ?>

    Und die Ausgabe ist "Older Entries 1"
    Soll ich $paged im gesamten Code durch $page ersetzen? Oder nur paged durch page? Leider wird das dort auch nicht weiter erläutert.

    EDIT: $paged durch $page zu ersetzen führt zum selben Ergebnis.

    Einmal editiert, zuletzt von Tinn (14. August 2013 um 19:13)

  • Leider nur fast gelöst. Mit anderer Seite funktioniert es nicht

    Leider ist mein Problem nur fast gelöst.
    Die Seite Index, um die es bisher ging, ist als Startseite eingerichtet. Ich habe nun denselben Code für die Category Books benutzt. Das führt beim Klick auf "Older Entries" (heißt jetzt "Previous Posts") wieder zu ...page/2/ aber es erscheint die Fehlerseite 404 ohne Posts.
    Die Datei, bei der es funktioniert, heißt page-index.php
    Ich hatte auch testweise eine Page namens books angelegt und "publiziert", die das Template books benutzt.

    Bei category-books.php funktioniert es nicht. Umbenennung in page-books.php hilft leider nicht. Auch dieser Zusatz, den die page-index enthält, hilft bei books leider nicht:

    PHP
    <?php /* Template Name: books */ ?>

    Getestet mit beiden Varianten

    PHP
    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

    und

    PHP
    $paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1;

    Kein Unterschied.
    Aktiv ist die zweite Variante, Dateiname ist category-books.php.
    ohne Template Name: books

    Wäre bitte noch mal jemand so nett, mir auf die Sprünge zu helfen?

  • cagegory-books.php ist ein kategorien-template, was die artikel der 'books' kategorie anzeigen sollte; und wo du eigentlich keine extra query am anfang einsetzen solltest.

    wieso versuchts du da noch andere kategorien mit reinzuziehen?

    moegliche andere methode: http://codex.wordpress.org/Function_Refer…uery_Parameters

    zB (nicht getestet):

    PHP
    global $wp_query;
    $args = array_merge( $wp_query->query_vars, array( 'cat' => '3,9,10,23' ) );
    query_posts( $args );
  • Hallo alchymyth,

    Danke für den Hinweis. Eigentlich möchte ich dort auch nur Posts der Kategorie books anzeigen. Daher hab ich nun auch 'category_name=books' im Code:

    Das führt mich aber auch zu dem beschriebenen ...page/2/ als URL und der Fehler 404 Seite.

    Mir würde tatsächlich ein ganz einfacher Loop reichen, der nur books anzeigt. Ich möchte das gar nicht erweitern. Hauptsache, der next_posts_link() funktioniert. Ich finde nur nirgends ein Beispiel dafür, nur riesige Codeblöcke, die mir viel zu komplex zu sein scheinen und bei mir nicht funktionieren. Kennst du da was einfaches?

  • Im letzten Code war ein Fehler. Richtig ist

    PHP
    <?php
    // usage with max_num_pages
    next_posts_link('next posts &raquo;&raquo;', $wp_query->max_num_pages);
    ?>

    Ich hatte $the_query statt $wp_query.
    Hilft aber nichts. Es bleibt bei Fehler 404.

    Ich hab hier nachgesehen http://codex.wordpress.org/Category_Templates

    und bin darauf umgestiegen

    Aber auch das führt zu ...page/2/ und Fehler 404.

    UND: Es werden auch Posts ALLER Kategorien angezeigt, nicht nur books. Ich nahm an, der Dateiname category-books.php bringt Wordpress dazu, sich auf Posts dieser Kategorie zu beschränken. Ist das ein Irrtum?

    Ich bin ratlos und würde mich über Hilfe freuen.

    Einmal editiert, zuletzt von Tinn (18. August 2013 um 17:30)

  • Problem gelöst. An den Permalinks Einstellungen /%category%/%postname%/ hat es gehakt. Der Code war ok. Vielen Dank noch mal alchymyth!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!