Was ich machen möchte:
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( '< %link' ) ?></span>
<?php } ?>
<?php if( get_adjacent_post( false, '', false ) ) { ?>
<span class="next"><?php next_post_link( '%link >' ) ?></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 $wp_query
Variable verwenden. Als ich jedoch meine Abfragevariable in änderte $wp_query
, erschienen die Links, aber wenn geklickt wurde, geschah nichts.
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.
the_title()
'meta_value' => $author_id
von der genannten Dropdown-Liste ausgefüllt? Und wenn Sie jeden Autor über das Dropdown-Menü auswählen, werden die ersten zehn Beiträge korrekt angezeigt?
$author_query->have_posts()
zurückkehrt true
und dass das $author_query
tatsächlich irgendwelche Beiträge enthält?