Je voudrais publier les articles liés sur une seule page personnalisée. Tout semble être configuré correctement. Lorsque je survole mes liens de pagination, je vois http://example.com/post-type-slug/post-slug/page/2/
. Quand je clique dessus, je vais à cette page, mais je suis redirigé vers la première page: http://example.com/post-type-slug/post-slug/
Voici comment j'ai configuré mon type de message:
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,
)
);
Voici comment je fais mon WP_query sur la page unique
$queryArgs = array(
'posts_per_page' => 3,
);
$queryArgs['paged'] = get_query_var( 'page' ) ? get_query_var('page') : 1;
$customQuery = new WP_Query( $queryArgs );
Pour ma pagination, j'utilise la méthode décrite ici: https://wordpress.stackexchange.com/a/172818/10595
Pourquoi suis-je redirigé vers l'index? Que puis-je faire pour empêcher cela?.
J'ai vérifié certaines choses: Lorsque je désactive les liens permanents, les liens de pagination disent http://example.com/? posttype=post-slug&paged=2
. Lorsque je modifie manuellement ceci en http://example.com/? posttype=post-slug&page=2
, tout fonctionne comme je le souhaite. Comment puis-je modifier ma pagination pour le faire pour moi?
J'ai trouvé la réponse. J'avais cherché haut et bas hier, mais aujourd'hui je l'ai finalement trouvé: 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
Ceci, copié dans mon fichier functions.php, permet à WordPress de reconnaître le paramètre paged
sur une seule entrée posttype
.