Modificare la classe dell'elenco di paginazione
La funzione paginate_links()
restituisce una lista non ordinata con una classe chiamata "page-numbers". Come posso modificare questa classe?
MODIFICA
Attualmente, sto utilizzando il metodo provvisorio qui sotto.
$return = paginate_links( $arg );
echo str_replace( "<ul class='page-numbers'>", '<ul class="pagination">', $return );
C'è un modo migliore per farlo?

Anche io stavo cercando la stessa soluzione per utilizzarla con i link di impaginazione di Bootstrap,
il codice qui sotto funziona al 100% nel mio tema.
function bittersweet_pagination() {
global $wp_query;
if ( $wp_query->max_num_pages <= 1 ) return;
$big = 999999999; // serve un numero improbabile
$pages = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'type' => 'array',
) );
if( is_array( $pages ) ) {
$paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
echo '<div class="pagination-wrap"><ul class="pagination">';
foreach ( $pages as $page ) {
echo "<li>$page</li>";
}
echo '</ul></div>';
}
}
usa la funzione per chiamarla in index.php es: <?php bittersweet_pagination(); ?>
o in qualsiasi altro file. Ho anche sovrascritto alcuni stili di bootstrap che potrebbero esserti utili.
.pagination-wrap {
clear: both;
display: block;
overflow: hidden;
text-align: center;
}
.pagination-wrap .pagination {
margin-bottom: 0;
margin-top: 0;
}
.pagination-wrap .pagination > li:first-child > a,
.pagination-wrap .pagination > li:first-child > span {
border-bottom-left-radius: 0px;
border-top-left-radius: 0px;
}
.pagination-wrap .pagination > li:last-child > a,
.pagination-wrap .pagination > li:last-child > span {
border-bottom-right-radius: 0px;
border-top-right-radius: 0px;
}
.pagination-wrap .pagination > li > a,
.pagination-wrap .pagination > li > span {
background-color: #4FBEBA;
border: 1px solid #1BA5A0;
padding: 10px 15px;
font-weight: bold;
color: #FFFFFF;
}
.pagination-wrap .pagination > li > a:hover,
.pagination-wrap .pagination > li > span:hover,
.pagination-wrap .pagination > li > a:focus,
.pagination-wrap .pagination > li > span:focus {
background-color: #1BA5A0;
border-color: #189690;
}
.pagination-wrap .pagination .current {
background-color: #1BA5A0;
border-color: #189690;
}
.pagination-wrap .pagination .current:hover,
.pagination-wrap .pagination .current span:hover {
background-color: #189690;
border-color: #148781;
}

Potresti migliorare leggermente le prestazioni, dato che questa query verrà chiamata ogni volta che ogni pagina viene generata, anche quando non è necessaria la paginazione. Aggiungi: if ( $wp_query->max_num_pages <= 1 ) return;
dopo il tuo global $wp_query all'inizio della funzione.

paginate_links()
non offre un parametro e non ci sono hook - vedi sorgente - disponibili per modificare la/e classe/i. Questo significa che puoi farlo come hai già fatto oppure creare una tua funzione di paginazione basata su paginate_links()
.

Un'altra opzione non menzionata qui è quella di copiare gli stili nelle classi di paginazione di WordPress, invece di cambiare la classe assegnata all'elemento.
Se stai utilizzando Bootstrap e includendo tutto con Sass, allora puoi applicare facilmente gli stili usando la direttiva @extend
.
ul.page-numbers {
@extend .pagination;
> li {
> a, > span {
&.page-numbers {
@extend .page-link
&:focus, :hover {
/* Stili aggiuntivi per hover/focus qui */
}
}
}
}
}
Questo può essere rilevante in alcune situazioni, ma ritengo che il codice nella domanda originale sia la soluzione migliore per la maggior parte delle applicazioni.

Se vuoi semplicemente sostituire stringhe per raggiungere la terra promessa di Bootstrap, ecco qualcosa che potrebbe aiutarti.
function bootstrap_pagination()
{
global $wp_query;
$big = 999999999;
$listString = paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages,
'prev_text' => __('← Precedente'),
'next_text' => __('Successivo →'),
'type' => 'list',
));
$listString = str_replace("<ul class='page-numbers'>", '<ul class="pagination">', $listString);
$listString = str_replace('page-numbers', 'page-link', $listString);
$listString = str_replace('<li>', '<li class="page-item">', $listString);
$listString = str_replace(
'<li class="page-item"><span aria-current="page" class="page-link current">',
'<li class="page-item active"><span aria-current="page" class="page-link">',
$listString
);
echo $listString;
}
