There is a lot af possibilities. I use for few years this method :
$all_post = get_posts($args);
$nb_ppp = get_option('posts_per_page');
$nb_post = count($all_post);
$nb_page = ceil($nb_post / $nb_ppp);
$current_page = (!empty(get_query_var('paged'))) ? get_query_var('paged') : 1;
$args['offset'] = ($current_page == 1) ? 0 : (($current_page - 1) * $nb_ppp);
$args['numberposts'] = $nb_ppp;
$current_posts = get_posts($args);
All informations to create pagination :
– Number of pages
– Current page
– Base link url (miss)
I hope you use a taxonomy to liste your posts :
global $wp_query;
$term = $wp_query->queried_object;
$base_link = get_term_link($term);
Or a basic page model :
global $post;
$base_link = get_permalink($post->ID);
You can create a simple loop (for …).
$link = $base_link.'/page/'.$i;
Enjoy.