web-dev-qa-db-ja.com

カスタム投稿タイプの単一投稿の2次ループのページ区切りが最初のページにリダイレクトされる

カスタム投稿タイプの単一ページに関連投稿を出力したいです。すべて正しく設定されているようです。ページネーションリンクにカーソルを合わせると、http://example.com/post-type-slug/post-slug/page/2/が表示されます。クリックするとそのページに移動しますが、最初のページにリダイレクトされます。http://example.com/post-type-slug/post-slug/

これが私の投稿タイプの設定方法です。

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,
    )
);

これは私が単一のページで私のWP_queryをしている方法です

    $queryArgs = array( 
        'posts_per_page' => 3,
    );
    $queryArgs['paged'] = get_query_var( 'page' ) ? get_query_var('page') : 1; 
    $customQuery = new WP_Query( $queryArgs );

私の改ページのために私はここで説明されている方法を使用しています。 https://wordpress.stackexchange.com/a/172818/10595

インデックスにリダイレクトされるのはなぜですか?これを防ぐために私は何ができますか。

私はいくつかのことをチェックアウトしました:私がかなりパーマリンクを無効にすると、ページネーションリンクはhttp://example.com/? posttype=post-slug&paged=2を言います。手動でそれをhttp://example.com/? posttype=post-slug&page=2に変更すると、すべてが望み通りに動作します。これを行うためにページ区切りを変更するにはどうすればよいですか。

2
Florian

私は答えを見つけました。昨日は高値と安値を検索していましたが、今日はついに見つけました。 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

これを私のfunctions.phpにコピーすると、WordPressは単一のpagedエントリのposttypeパラメータを認識するようになります。

0
Florian