You can calculate offset
via paged
and posts_per_page
. E.g:
$per_page = 6;
$paged = get_query_var('paged') ? : 1;
$offset = (1 === $paged) ? 0 : (($paged - 1) * $per_page) + (($paged - 1) * 2);
$args = array(
'order' => 'ASC',
'paged' => $paged,
'offset' => $offset,
'orderby' => 'ID',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => $per_page,
'ignore_sticky_posts' => 1
);
$query = new WP_Query($args);
while ( $query->have_posts() ) : $query->the_post();
echo get_the_title() . '<br>';
endwhile;
previous_posts_link('« Previous', $query->max_num_pages);
if ($paged > 1) echo ' | ';
next_posts_link('More »', $query->max_num_pages);
echo '<br> Showing ' . $offset . '-' . ($offset + 6) . ' of ' . $query->found_posts . ' posts.';
wp_reset_postdata();
Note that the loop start at index 0, so if we ignore sticky posts and only display 6 posts per page, the result on page 2 should be 8-14 instead 9-14 as you expected.