Ottima domanda! WordPress assegna il numero della tua pagina di commento alla query var 'cpage'che viene impostata /comment-page-1/alla fine dell'URL . Quindi il tuo colpevole è nella redirect_canonical()funzione, riga 192 di /wp-includes/canoncial.php.
if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
Dato che la redirect_canonical()funzione viene impostata come azione, ciò che possiamo fare è inserire la nostra funzione da chiamare invece, impostare la nostra funzione su 'cpage'query var false, call redirect_canonical()e quindi 'cpage'riportarla su ciò che era; ciò impedirà a WordPress di reindirizzare su di te.
Per inserire la tua funzione devi chiamare i due hook 'init'e 'template_redirect'così, assicurandoti di impostare l' 'init'hook da chiamare dopo il do_action()core interno di WordPress che aggiunge redirect_canonical():
add_action('init','yoursite_init',11); //11=lower priority
function yoursite_init() {
remove_action('template_redirect','redirect_canonical');
add_action('template_redirect','yoursite_redirect_canonical');
}
add_action('template_redirect','yoursite_redirect_canonical');
function yoursite_redirect_canonical($requested_url=null, $do_redirect=true) {
$cpage = get_query_var('cpage');
set_query_var('cpage',false);
redirect_canonical($requested_url, $do_redirect);
set_query_var('cpage',$cpage);
}
Quindi ovviamente devi fare qualcosa con il tuo 'cpage'. Puoi verificare il valore restituito da get_query_var('cpage')oppure puoi aggiungere un altro hook per permetterti di creare un modello specifico per i commenti che è quello che ho fatto. Aggiungerà la ricerca di un file modello tema con lo stesso di quello che normalmente si carica ma con [comments].phpalla fine del nome anziché .php, ad es single[comments].php. Nota che ho impostato la priorità per questo filtro su 11; potresti dover impostare un numero ancora maggiore se un plugin che usi si aggiunge dopo il tuo hook:
add_filter('single_template','yoursite_single_template',11);
function yoursite_single_template($template) {
if (get_query_var('cpage'))
$template = str_replace('.php','[comments].php',$template);
return $template;
}
Ed ecco la prova che tutto funziona!

(fonte: mikeschinkel.com )