Почему функция is_single() возвращает неверное значение.

поскольку никто не смог помочь по топику

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().'">&laquo; 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 &raquo;</a>';
			}
			echo "$after</b>";
		}
	}
}

Судя по тому, что в выдаче число страниц выводится 999999, функция is_single() позвращает значение true ? не зависимо от того, что выводится, отдельная страница, или лента сообщенией.

Почему такое может быть?

Вы ошиблись. Вот это условие, которое отвечает за $max_page

if (get_query_var('what_to_show') == 'posts') {
...

} else {
     $max_page = 999999;
}

Но никак не is_single().

Спасибо, дейсвительно ошибся, еще не совсем привык к нотации, точнее не доконца вспомнил нотацию С

пошел разбираться и выяснил, что
get_query_var(‘what_to_show’) возвращает пустое значение.

Anonymous
Отправить
Ответ на: