wake-up-neo.net

Die sekundäre Loop-Paginierung für einzelne Posts vom Typ "Benutzerdefinierter Post" wird zur ersten Seite umgeleitet

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?

2
Florian

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.

0
Florian