Wordpress: WP page numbers+WP commentnavi

Wordpress 2.7 has a wonderful feature - comments pager. It means that comments to post are separated to several pages. That’s very useful, but, by default, wordpress poorly shows that navigation (only “forward” and “backward” links).

To show a cool pager we need to install WP commentnavi plugin. But, once again, by default it diesn’t look cool. If you use WP page numbers plugin, then you can use it’s style to show comments pages too. Here’s how to do it.


В вопрдпрессе 2.7 появилась такая замечательная вещь, как навигация по комментариям. Однако по умолчанию она выглядит убого (есть только ссылки вперёд-назад), и гораздо приятнее использовать постраничную навигацию. Это для нас делает плагин WP commentnavi. И, опять же, он не очень симпатично выглядит по умолчанию. Зато есть очень красивая и функциональная листалка для страниц блога под названием WP page numbers.

Соотвественно, было бы классно, чтобы оно выводилось одинаково, и в одном стиле. Бесспорно, это можно сделать через настраиваемый css плагина WP commentnavi - но это не очень удобно, да и зачем нам подгрузка лишних стилей? Лучше сделать так, чтобы WP commentnavi использовал стили от WP page numbers.


How to do it: 1) Open wp-commentnavi.php, and remove lines
Как это сделать: 1) открываем wp-commentnavi.php, после чего
### Function: Comment Navigation CSS
add_action('wp_head', 'commentnavi_css');
function commentnavi_css() {
    if(@file_exists(TEMPLATEPATH.'/commentnavi-css.css')) {
        wp_register_style('wp-commentnavi', get_stylesheet_directory_uri().'/commentnavi-css.css', false, '1.00', 'all');        
    } else {
        wp_register_style('wp-commentnavi', plugins_url('wp-commentnavi/commentnavi-css.css'), false, '1.00', 'all');
    }
    echo "\n".''."\n";
    wp_print_styles('wp-commentnavi');
    echo ''."\n";
}
Просто убираем.
2) Replace **function wp\_commentnavi($before = '', $after = '')** with the following code:
2) Заменяем функцию**function wp\_commentnavi($before = '', $after = '')**, которая занимается выводом кода пейджера на код
function wp_commentnavi($before = '', $after = '') {
    global $wp_query;
    $comments_per_page = intval(get_query_var('comments_per_page'));
    $paged = intval(get_query_var('cpage'));
    $commentnavi_options = get_option('commentnavi_options');
    $numcomments = intval($wp_query->comment_count);
    $max_page = intval($wp_query->max_num_comment_pages);
    if(empty($paged) || $paged == 0) {
        $paged = 1;
    }
    $pages_to_show = intval($commentnavi_options['num_pages']);
    $pages_to_show_minus_1 = $pages_to_show-1;
    $half_page_start = floor($pages_to_show_minus_1/2);
    $half_page_end = ceil($pages_to_show_minus_1/2);
    $start_page = $paged - $half_page_start;
    if($start_page <= 0) {
        $start_page = 1;
    }
    $end_page = $paged + $half_page_end;
    if(($end_page - $start_page) != $pages_to_show_minus_1) {
        $end_page = $start_page + $pages_to_show_minus_1;
    }
    if($end_page > $max_page) {
        $start_page = $max_page - $pages_to_show_minus_1;
        $end_page = $max_page;
    }
    if($start_page <= 0) {
        $start_page = 1;
    }
    if($max_page > 1 || intval($commentnavi_options['always_show']) == 1) {
        $pages_text = str_replace("%CURRENT_PAGE%", number_format_i18n($paged), $commentnavi_options['pages_text']);
        $pages_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $pages_text);
        echo $before.'
    '."\n"; if(!empty($pages_text)) { echo '
  •  '.$pages_text.' 
  • '; } if ($start_page >= 2 && $pages_to_show < $max_page) { $first_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $commentnavi_options['first_text']); echo '
  •  '.$first_page_text.' 
  • '; if(!empty($commentnavi_options['dotleft_text'])) { echo '
  •  '.$commentnavi_options['dotleft_text'].' 
  • '; } } echo'
  • '; previous_comments_link($commentnavi_options['prev_text']); echo'
  • '; for($i = $start_page; $i <= $end_page; $i++) { if($i == $paged) { $current_page_text = str_replace("%PAGE_NUMBER%", number_format_i18n($i), $commentnavi_options['current_text']); #echo '
  •  '.$current_page_text.' 
  • '; echo '
  •  '.$current_page_text.' 
  • '; } else { $page_text = str_replace("%PAGE_NUMBER%", number_format_i18n($i), $commentnavi_options['page_text']); echo '
  •  '.$page_text.' 
  • '; } } echo'
  • '; next_comments_link($commentnavi_options['next_text'], $max_page); echo'
  • '; if ($end_page < $max_page) { if(!empty($commentnavi_options['dotright_text'])) { echo '
  •  '.$commentnavi_options['dotright_text'].' 
  • '; } $last_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $commentnavi_options['last_text']); echo '
  •  '.$last_page_text.' 
  • '; } echo '
'.$after."\n"; } }
Voila, everything works, just like on [this](https://jehy.ru/articles/2008/10/05/wordpress-plugin-no-external-links/) page.
Вуаля, всё будет показываться красиво и в одном стиле, совсем как на [этой](https://jehy.ru/articles/2008/10/05/wordpress-plugin-no-external-links/) страничке (см. пейджер внизу, после комментариев).