カスタム投稿タイプの単一ページに関連投稿を出力したいです。すべて正しく設定されているようです。ページネーションリンクにカーソルを合わせると、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
に変更すると、すべてが望み通りに動作します。これを行うためにページ区切りを変更するにはどうすればよいですか。
私は答えを見つけました。昨日は高値と安値を検索していましたが、今日はついに見つけました。 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
パラメータを認識するようになります。