Ich möchte verwandte Posts auf einer benutzerdefinierten Postseite ausgeben. Alles scheint richtig eingestellt zu sein. Wenn ich über meine Paginierungslinks schwebe, sehe ich http://example.com/post-type-slug/post-slug/page/2/
. Wenn ich auf "Ich gehe zu dieser Seite" klicke, aber dann zurück zur ersten Seite umgeleitet werde: http://example.com/post-type-slug/post-slug/
So habe ich meinen Beitragstyp eingerichtet:
register_post_type( 'posttype',
array(
'rewrite' => array(
'slug' => 'post-type-slug',
'with_front' => false,
),
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => true,
'has_archive' => false,
'menu_position'=>5,
)
);
So mache ich meine WP_query auf der einzelnen Seite
$queryArgs = array(
'posts_per_page' => 3,
);
$queryArgs['paged'] = get_query_var( 'page' ) ? get_query_var('page') : 1;
$customQuery = new WP_Query( $queryArgs );
Für meine Paginierung verwende ich die hier beschriebene Methode: https://wordpress.stackexchange.com/a/172818/10595
Warum werde ich zum Index weitergeleitet? Was kann ich tun, um dies zu verhindern?.
Ich habe einige Dinge überprüft: Wenn ich hübsche Permalinks deaktiviere, sagen die Paginierungslinks http://example.com/? posttype=post-slug&paged=2
. Wenn ich das manuell in http://example.com/? posttype=post-slug&page=2
ändere, funktioniert alles so, wie ich es möchte. Wie kann ich meine Paginierung ändern, um dies für mich zu tun?
Ich habe die Antwort gefunden. Ich hatte gestern hoch und tief gesucht, aber heute habe ich es endlich gefunden: https://wordpress.stackexchange.com/a/143837/10595
add_action('template_redirect', function() {
if ( is_singular('posttype') ) {
global $wp_query;
$page = (int) $wp_query->get('page');
if ( $page > 1 ) {
// convert 'page' to 'paged'
$query->set( 'page', 1 );
$query->set( 'paged', $page );
}
// prevent redirect
remove_action( 'template_redirect', 'redirect_canonical' );
}
}, 0 ); // on priority 0 to be able removing 'redirect_canonical' added with priority 10
Dadurch, dass es in meine functions.php kopiert wird, erkennt WordPress den Parameter paged
bei einzelnen posttype
-Einträgen.