поскольку никто не смог помочь по топику
http://forum.maxsite.org/viewtopic.php?id=902
полез в код функции плагина wp-pagenavi203
function wp_pagenavi($before=' ', $after=' ', $prelabel='«', $nxtlabel='»') {
global $request, $posts_per_page, $wpdb, $paged;
$pages_to_show = 5;
$half_pages_to_show = round($pages_to_show/2);
if (!is_single()) {
if (get_query_var('what_to_show') == 'posts') {
preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);
//preg_match('#FROM\s(.*)\sORDER BY#siU', $request, $matches);
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");
$max_page = ceil($numposts /$posts_per_page);
} else {
$max_page = 999999;
}
if(empty($paged)) {
$paged = 1;
}
if($max_page > 1) {
echo "$before Pages ($max_page): <b>";
if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">« First</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged - $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 && $i <= $max_page) {
if($i == $paged) {
echo "[$i]";
} else {
echo ' <a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
}
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.get_pagenum_link($max_page).'">Last »</a>';
}
echo "$after</b>";
}
}
}
Судя по тому, что в выдаче число страниц выводится 999999, функция is_single() позвращает значение true ? не зависимо от того, что выводится, отдельная страница, или лента сообщенией.
Почему такое может быть?

Вы ошиблись. Вот это условие, которое отвечает за $max_page
Но никак не is_single().
Спасибо, дейсвительно ошибся, еще не совсем привык к нотации, точнее не доконца вспомнил нотацию С
пошел разбираться и выяснил, что
get_query_var(‘what_to_show’) возвращает пустое значение.