Modifica della classe dell'elenco di impaginazione


17

paginate_links()la funzione restituisce un elenco non ordinato con la classe denominata "numeri di pagina". Come posso cambiare questa classe?

MODIFICARE

Attualmente sto usando il metodo del cerotto di seguito.

$return = paginate_links( $arg );
echo str_replace( "<ul class='page-numbers'>", '<ul class="pagination">', $return );

C'è un modo migliore?


1
Ho trovato un breve tutorial su questo e cosa posso vedere usando la classe tematica bootstrap, quindi penserò che questo ti aiuterà! http://www.ordinarycoder.com/paginate_links-class-ul-li-bootstrap/
Erik Larsson

Ho creato una classe php utile quando è necessario impostare i nomi delle classi di tag LI e A html. gist.github.com/pixeline/1dc662b756c553eb5efcb6ec4753375f
pixeline

@ErikLarsson Il collegamento è interrotto.
MastaBaba,

Risposte:


11

paginate_links()non offre un parametro e non ci sono hook - vedi source - disponibili per cambiare le classi. Ciò significa che puoi farlo come l'hai fatto o creare la tua funzione di impaginazione basata su paginate_links().


14

Stavo anche cercando la stessa soluzione per usarla con link di impaginazione 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; // need an unlikely integer

$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 chiamare in index.php ad es; <?php bittersweet_pagination(); ?>o qualsiasi altro file. Sovrascrivo anche un po 'di stile bootstrap che potrebbe aiutarti.

.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;
}

1
È possibile migliorare leggermente le prestazioni, poiché questa query verrà chiamata ogni volta che viene generata ogni pagina, anche quando non è necessaria l'impaginazione. aggiungere: `` `if ($ wp_query-> max_num_pages <= 1) return; `` `dopo il tuo $ wp_query globale all'inizio della funzione.
pixeline

5

per questo è necessario utilizzare il parametro type

$links = paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $posts_array->max_num_pages,
    'prev_text'          => __( 'Previous page', 'twentyfifteen' ),
    'next_text'          => __( 'Next page', 'twentyfifteen' ),
    'type' => 'list'
) );
   echo $links

0

Un'altra opzione non annotata qui è quella di copiare gli stili nelle classi di impaginazione di WordPress, invece di cambiare la classe assegnata all'elemento.

Se stai usando Bootstrap e raggruppando tutto con sass, puoi applicare facilmente gli stili usando la @extenddirettiva.

ul.page-numbers {
    @extend .pagination;
    > li {
        > a, > span {
            &.page-numbers {
                @extend .page-link
                &:focus, :hover {
                    /* Additional hover/focus styles here */
                }
            }
        }
    }
}

Questo può essere pertinente ad alcune situazioni, ma ritengo che il codice nella domanda originale sia la soluzione migliore per la maggior parte delle applicazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.