Pagination is somewhat working on frontpage, doesn’t update when “prev” is clicked

I suspect your problem is here:

'base' => get_pagenum_link(1) . '%_%'

You’re passing 1 to get_pagenum_link(), rather than the actual page number. Try passing your previously determined $current_page instead:

'base' => get_pagenum_link( $current_page ) . '%_%'

Note, I use this as base:

'base' => @add_query_arg('paged','%#%')

Edit

I tried your suggestion as well as the '@add_query_arg' that you use and neither seemed to actually update the pagination to the next set of posts. The url changes to “/besh/page/2” but the posts don’t change and the page number stays at 1. It’s as if I’m missing something entirely from my code.

The best I can do is to give you my full, working code:

/**
 * Paginate Archive Index Page Links
 */
function oenology_get_paginate_archive_page_links( $type="plain", $endsize = 1, $midsize = 1 ) {
    global $wp_query, $wp_rewrite;  
    $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

    // Sanitize input argument values
    if ( ! in_array( $type, array( 'plain', 'list', 'array' ) ) ) $type="plain";
    $endsize = (int) $endsize;
    $midsize = (int) $midsize;

    // Setup argument array for paginate_links()
    $pagination = array(
        'base' => @add_query_arg('paged','%#%'),
        'format' => '',
        'total' => $wp_query->max_num_pages,
        'current' => $current,
        'show_all' => false,
        'end_size' => $endsize,
        'mid_size' => $midsize,
        'type' => $type,
        'prev_text' => '<<',
        'next_text' => '>>'
    );

    if( $wp_rewrite->using_permalinks() )
        $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );

    if( !empty($wp_query->query_vars['s']) )
        $pagination['add_args'] = array( 's' => get_query_var( 's' ) );

    return paginate_links( $pagination );
}