As I already stated in a comment,
You need to use
get_option( 'posts_per_page' )
andget_query_var( 'paged' )
to calculate your post numbers
You can do something like the following: (I have commented the code to make it easy to follow. This goes into functions.php)
function get_post_number()
{
global $wp_query;
/*
* Get current page number. Set page 1 to one as get_query_var( 'paged' ) will be 0
*/
$current_page_number = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
/*
* Get the posts_per_page option that is set under "Reading"
*/
$posts_per_page = get_option( 'posts_per_page' );
/*
* Get the current post position in the loop, add 1 because the counter starts at 0
*/
$current_post_position = $wp_query->current_post + 1;
/*
* If this is page one, return the post position as is
*/
if ( $current_page_number == 1 )
return $current_post_position;
/*
* Calculate the post number on paged pages
*/
return ( $posts_per_page * ( $current_page_number - 1 ) ) + $current_post_position;
}
You can then use it as follow in your templates to display the correct post numbers (You need to use this inside the loop)
echo get_post_number();