Schimbarea clasei listei de paginare

11 dec. 2013, 10:41:13
Vizualizări: 64.6K
Voturi: 21

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ă?

3
Comentarii

Am găsit un tutorial rapid pe această temă și din ceea ce văd, folosiți clasa temei bootstrap, așa că cred că acest lucru vă va ajuta! http://www.ordinarycoder.com/paginate_links-class-ul-li-bootstrap/

Erik Larsson Erik Larsson
4 mar. 2014 23:06:40

@ErikLarsson Link-ul nu funcționează.

MastaBaba MastaBaba
16 sept. 2017 02:39:21

Am creat o clasă php care este utilă atunci când trebuie să setați numele claselor pentru tag-urile HTML LI și A. https://gist.github.com/pixeline/1dc662b756c553eb5efcb6ec4753375f

pixeline pixeline
9 dec. 2016 01:12:39
Toate răspunsurile la întrebare 4
1
18

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;
}
24 iun. 2014 19:27:43
Comentarii

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.

pixeline pixeline
8 dec. 2016 22:59:45
0
12

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().

11 dec. 2013 12:01:06
0

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.

15 ian. 2019 07:43:09
0

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;

}
26 ian. 2023 00:00:46