Cambiando la clase de la lista de paginación
La función paginate_links()
devuelve una lista desordenada con una clase llamada "page-numbers". ¿Cómo puedo cambiar esta clase?
EDICIÓN
Actualmente, estoy usando el método provisional que se muestra a continuación.
$return = paginate_links( $arg );
echo str_replace( "<ul class='page-numbers'>", '<ul class="pagination">', $return );
¿Hay alguna mejor manera de hacerlo?

También estaba buscando la misma solución para usarla con los enlaces de paginación de Bootstrap,
el siguiente código funciona al 100% en mi tema.
function bittersweet_pagination() {
global $wp_query;
if ( $wp_query->max_num_pages <= 1 ) return;
$big = 999999999; // necesitamos un entero improbable
$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 función para llamar en index.php por ejemplo: <?php bittersweet_pagination(); ?>
o cualquier otro archivo. También sobrescribí algunos estilos de Bootstrap que podrían ayudarte.
.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;
}

paginate_links()
no ofrece un parámetro y no hay hooks disponibles - ver código fuente - para cambiar las clases. Lo que significa que puedes hacerlo como lo has hecho o crear tu propia función de paginación basada en paginate_links()
.

Otra opción no mencionada aquí es copiar los estilos a las clases de paginación de WordPress, en lugar de cambiar la clase asignada al elemento.
Si estás usando Bootstrap y compilando todo con Sass, entonces puedes aplicar los estilos fácilmente usando la directiva @extend
.
ul.page-numbers {
@extend .pagination;
> li {
> a, > span {
&.page-numbers {
@extend .page-link
&:focus, :hover {
/* Estilos adicionales para hover/focus aquí */
}
}
}
}
}
Esto puede ser relevante para algunas situaciones, pero considero que el código de la pregunta original es la mejor solución para la mayoría de aplicaciones.

Si quieres reemplazar cadenas para llegar a la tierra prometida de Bootstrap, aquí hay algo que puede ayudarte.
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' => __('← Anterior'), // Traducido: Anterior
'next_text' => __('Siguiente →'), // Traducido: Siguiente
'type' => 'list',
));
// Reemplazar clases para adaptar a Bootstrap
$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;
}
