Schimbarea clasei listei de paginare
Funcția paginate_links()
returnează o listă neordonată cu clasa numită "page-numbers". Cum pot schimba această clasă?
EDITARE
În prezent, folosesc metoda provizorie de mai jos.
$return = paginate_links( $arg );
echo str_replace( "<ul class='page-numbers'>", '<ul class="pagination">', $return );
Există o metodă mai bună?

Căutam și eu aceeași soluție pentru a o folosi cu link-urile de paginare din Bootstrap,
codul de mai jos funcționează 100% în tema mea.
function bittersweet_pagination() {
global $wp_query;
if ( $wp_query->max_num_pages <= 1 ) return;
$big = 999999999; // un număr improbabil de mare
$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>';
}
}
folosește funcția pentru a o apela în index.php de exemplu; <?php bittersweet_pagination(); ?>
sau în orice alt fișier. De asemenea, am suprascris unele stiluri din Bootstrap care te-ar putea ajuta.
.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;
}

Ai putea îmbunătăți puțin performanța, deoarece această interogare va fi apelată de fiecare dată când este generată o pagină, chiar și atunci când nu este necesară paginarea. Adaugă: if ( $wp_query->max_num_pages <= 1 ) return;
după global $wp_query la începutul funcției.

paginate_links()
nu oferă un parametru și nu există hook-uri - vezi sursa - disponibile pentru a schimba clasa(le). Aceasta înseamnă că poți face așa cum ai făcut deja sau poți crea propria funcție de paginare bazată pe paginate_links()
.

O altă opțiune care nu este menționată aici este copierea stilurilor în clasele de paginare WordPress, în loc să schimbi clasa atribuită elementului.
Dacă folosești Bootstrap și împachetezi totul cu sass, atunci poți aplica stilurile ușor folosind directiva @extend
.
ul.page-numbers {
@extend .pagination;
> li {
> a, > span {
&.page-numbers {
@extend .page-link
&:focus, :hover {
/* Stiluri suplimentare pentru hover/focus aici */
}
}
}
}
}
Această abordare poate fi relevantă în anumite situații, dar consider că codul din întrebarea originală este cea mai bună soluție pentru majoritatea aplicațiilor.

Dacă dorești să înlocuiești simplu șirurile de caractere pentru a ajunge în țara făgăduită a Bootstrap, atunci iată ceva care te poate ajuta.
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'),
'next_text' => __('Următor →'),
'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;
}
