wake-up-neo.net

Wordpress-Paginierung funktioniert nicht - zeigt immer den Inhalt der ersten Seiten an

Ich arbeite an einer Website, auf der ich ein Blog habe, aber ich habe auch einen benutzerdefinierten Beitragstyp, mit dem ich einige Videos einfügen kann.

Ich möchte die Paginierung verwenden, damit die Paginierung auftritt, wenn mehr als 9 Videos angezeigt werden.

Der erste Teil davon funktioniert. Die Videos sind in der Tat auf 9 pro Seite begrenzt und die Paginierung wird unten korrekt angezeigt.

Wenn ich jedoch auf den Link für die zweite Seite klicke, werden die Videos der ersten Seite angezeigt, obwohl sich die URL ändert.

Bei meinen "normalen" Blog-Posts funktioniert die Paginierung genau wie beabsichtigt.

Dies ist der aktuelle Code, den ich für meinen benutzerdefinierten Beitragstyp verwende:

<?php if ( have_posts() ) : ?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('post_type=videos&posts_per_page=9&paged=$paged'); ?>

    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>

Jede Hilfe wäre sehr dankbar.

7
Johnny

Warum Ihr aktueller Code fehlschlägt

Sie erhalten immer den Inhalt der ersten Seite, da die Zeichenfolge der an query_posts übergebenen Parameter in einfache Anführungszeichen gekapselt werden und die Erweiterung von Variablen (sowie von Escape-Sequenzen für andere Sonderzeichen als $) verhindert wird.

query_posts("post_type=videos&posts_per_page=9&paged=$paged"); would kümmert sich um dieses Problem.

query_posts('post_type=videos&posts_per_page=9&paged='.$paged); would also.

Und schließlich würde das Übergeben eines Arrays gemischter Argumente anstelle einer URL-Abfragezeichenfolgeebenfalls.

Davon abgesehen, sollten Sie query_posts überhaupt nicht verwenden :

Wie es gemacht werden soll

Gemäß Ihrem Kommentar haben Sie versucht, get_posts zu verwenden.
Das ist in der Tat eine sehr nützliche Funktion, aber nicht der richtige Weg, wenn Sie danach eine WordPress-Schleife verwenden möchten. get_posts gibt ein Array von Post-Objekten zurück - die Eigenschaft posts des WP_Query -Objekts. Aber nur diese eine Eigenschaft, ohne all die anderen Extras und Methoden, die WP_Query bereitstellt.

Um mit dem obigen Code-Snippet fortzufahren, gehen Sie folgendermaßen vor:

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    $args = array(
        'post_type' => 'videos',
        'posts_per_page' => 9,
        'paged' => $paged
    );
    $your_query = new WP_Query( $args );

    if ( $your_query->have_posts() ) {
        /* The Loop */
        while ( $your_query->have_posts() ) {
            $your_query->the_post();
            // do something
        }
    } else {
        echo 'Sorry, no posts found.';
    }
?>
16
Johannes Pille