it-swarm.com.de

WP_Query Pagination auf single-custom.php

Was ich vorhabe zu tun:

Richten Sie die WP_Query-Paginierung in einer einzelnen benutzerdefinierten post-type.php-Vorlagendatei ein

Was habe ich getan

1) Erstellt einen Beitragstyp namens "Autoren". Jeder Beitrag innerhalb dieses Beitragstyps ist ein einzelner Autor.

2) Standardmäßige Seiten zum Bearbeiten von Beiträgen enthalten ein Dropdown-Menü, in dem alle Beiträge (Autoren) des benutzerdefinierten Beitragstyps des Autors aufgelistet sind.

3) Es wurde eine Vorlage für die Datei single-authors.php erstellt, in der alle Posts mit den Autoren-Metadaten aus der Dropdown-Liste abgefragt werden. Das Ergebnis ist eine Liste der Posts, denen derselbe Autor zugewiesen ist (eine Art Archiv):

<?php

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

/*We need this here to add and maintain Pagination if Template is assigned to Front Page*/
if ( get_query_var( 'paged' ) ) {
    $paged = get_query_var('paged');
} elseif ( get_query_var( 'page' ) ) {
    $paged = get_query_var( 'page' );
} else {
    $paged = 1;
}

$args = array(
    'posts_per_page'    =>  10,
    'meta_key'          => 'author_select',
    'meta_value'        => $author_id,
    'paged'             => $paged,
);

$temp = $wp_query;
$wp_query = NULL;

$wp_query = new WP_Query($args);

?>

<?php if( $wp_query->have_posts() ) : ?>    
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    <?php // Successfully outputs the results of the above query, so I've omitted the code from this example. ?>

    <?php endwhile; ?>

<div class="single_navigation"> 
    <?php if( get_adjacent_post( false, '', true ) ) { ?>
        <span class="prev"><?php previous_post_link( '&lt; %link' ) ?></span>
    <?php } ?>

    <?php if( get_adjacent_post( false, '', false ) ) { ?>
        <span class="next"><?php next_post_link( '%link &gt;' ) ?></span>
    <?php } ?>
    </div><!--/single navigation-->
<?php endif; ?>

<?php
    $wp_query = null;
    $wp_query = $temp;
    wp_reset_query();
?>

Woran ich festhalte

Die Paginierungslinks werden nicht angezeigt. Ich habe einige Nachforschungen angestellt und festgestellt, dass sie die Variable $wp_query verwenden. Als ich jedoch meine Abfragevariable in $wp_query änderte, wurden die Links angezeigt, aber wenn geklickt wurde, wurden keine Änderungen vorgenommen.

Irgendeine Idee, wo ich falsch liege?

Bearbeiten:

Um einige Ihrer Fragen zu beantworten, gibt meine Abfrage die von mir abgefragten Posts erfolgreich aus. $ Author_id hat bereits einen Wert, den ich nicht in dieses Code-Snippet aufgenommen habe. Ebenso habe ich die eigentliche Inhaltsausgabe in der while-Schleife ausgelassen, da dieser Teil nicht das Problem ist. Das Problem ist, dass ich den Inhalt, der bereits in diesem einzelnen Beitrag vorhanden ist, paginieren muss.

Der Zweck dieser Funktionalität bestand darin, Posts zu ermöglichen, benutzerdefinierte Autoren zu haben (außerhalb des eingebauten Benutzersystems), und der Zweck dieser Vorlage besteht darin, alle Posts für einen bestimmten Autor (der bereits funktioniert) auszugeben.

13
Shane

Basierend auf einer anderen ähnlichen WPSE-Frage " Die Paginierung funktioniert nicht. Werte für benutzerdefinierte Felder in wp_query " würde ich vorschlagen, global $paged; am Anfang Ihrer Vorlagendatei hinzuzufügen:

global $paged;
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
0
Stephen S.