Отличный вопрос! WordPress назначает номер страницы вашего комментария для запроса var, 'cpage'который устанавливается /comment-page-1/в конце вашего URL . Итак, ваш виновник в redirect_canonical()функции, строка 192 из /wp-includes/canoncial.php.
if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
Поскольку redirect_canonical()функция устанавливается как действие, мы можем вставить собственную функцию, которая будет вызываться вместо нее , чтобы наша функция установила для 'cpage'запроса var значение false, call redirect_canonical(), а затем 'cpage'вернула обратно то, что было; это удержит WordPress от перенаправления на вас.
Чтобы вставить свою собственную функцию, вам нужно вызвать две ловушки 'init'и тому 'template_redirect'подобное, поэтому обязательно установите 'init'ловушку, которая будет вызываться после do_action()внутреннего ядра WordPress, которое добавляет 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);
}
Тогда, конечно, вам нужно что-то сделать со своим 'cpage'. Вы можете либо проверить возвращаемое значение, get_query_var('cpage')либо добавить еще один хук, чтобы позволить вам создать шаблон для комментария, что я и сделал. Это добавит вид для шаблона темы файла с таким же , как это было бы нормально загружаться , но с [comments].phpв конце имени вместо .php, то есть single[comments].php. Обратите внимание, что для этого фильтра я установил приоритет 11; вам может потребоваться установить еще большее число, если используемый вами плагин добавляет себя после вашего хука:
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;
}
И вот доказательство того, что все это работает!

(источник: mikeschinkel.com )