Co chcę zrobić:
Skonfiguruj WP_Query
paginację w pliku szablonu single-custom-post-type.php
Co zrobiłem
1) Utworzono typ postu o nazwie „autorzy”. Każdy post w ramach tego typu postów jest indywidualnym autorem.
2) Standardowe strony ekranu edycji postów zawierają menu rozwijane, które zawiera listę wszystkich postów (autorów) z niestandardowego typu postów autorów.
3) Utworzono szablon single-author.php, który wyszukuje wszystkie posty za pomocą metadanych autora z menu rozwijanego, więc wynikiem jest lista postów, do których przypisano tego samego autora (coś w rodzaju archiwum):
<?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();
?>
Na czym utknąłem
Łącza do stronicowania nie są wyświetlane. Przeprowadziłem badania i odkryłem, że używają tej $wp_query
zmiennej, jednak kiedy zmieniłem zmienną zapytania na $wp_query
, pojawiły się linki, ale po kliknięciu nic nie zrobiłem.
Masz pomysł, gdzie się mylę?
Edytować:
Aby odpowiedzieć na niektóre pytania, moje zapytanie z powodzeniem wyświetla posty, o które pytam, $ autor_id ma już wartość, której nie zawarłem w tym fragmencie kodu. Podobnie pominąłem rzeczywistą treść wyjściową w pętli while, ponieważ ta część nie stanowi problemu. Problem polega na tym, że muszę paginować treść, która już istnieje w tym pojedynczym poście.
Celem tej funkcji było umożliwienie autorom niestandardowych postów (poza wbudowanym systemem użytkowników), a celem tego szablonu jest wyprowadzenie wszystkich postów dla danego autora (który już działa).
the_title()
'meta_value' => $author_id
wspomniano o wypełnianiu listy rozwijanej? A czy podczas wybierania każdego autora za pomocą listy rozwijanej pierwsze dziesięć postów wyświetla się poprawnie?
$author_query->have_posts()
zwroty true
i że $author_query
faktycznie zawiera jakieś posty?