Cambiar la clase de la lista de paginación


17

paginate_links()La función devuelve una lista desordenada con una clase llamada "números de página". ¿Cómo puedo cambiar esta clase?

EDITAR

Actualmente, estoy usando el método de curita a continuación.

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

¿Hay alguna forma mejor?


1
He encontrado un tutorial rápido sobre esto, y lo que puedo ver es que usas la clase de tema bootstrap, ¡así que creo que esto ayudará! http://www.ordinarycoder.com/paginate_links-class-ul-li-bootstrap/
Erik Larsson

He creado una clase php que es útil cuando necesita establecer los nombres de clase de etiquetas LI y A html. gist.github.com/pixeline/1dc662b756c553eb5efcb6ec4753375f
pixeline

@ErikLarsson El enlace está roto.
MastaBaba

Respuestas:


11

paginate_links()no ofrece un parámetro y no hay ganchos (ver fuente ) disponibles para cambiar las clases. Lo que significa que puede hacerlo como lo ha hecho o crear su propia función de paginación basada en paginate_links().


14

También estaba buscando la misma solución para usarlo con enlaces de paginación 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; // 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>';
        }
}

use la función para llamar a index.php por ejemplo; <?php bittersweet_pagination(); ?>o cualquier otro archivo. También sobrescribo 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;
}

1
Podría mejorar un poco el rendimiento, ya que esta consulta se llamará cada vez que se genere cada página, incluso cuando no sea necesaria la paginación. add: `` `if ($ wp_query-> max_num_pages <= 1) return; `` `después de su $ wp_query global al comienzo de la función.
pixeline

5

para esto necesitas usar el parámetro 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

Otra opción que no se menciona aquí es copiar los estilos a las clases de paginación de WordPress, en lugar de cambiar la clase asignada al elemento.

Si está utilizando Bootstrap y agrupando todo con sass, puede aplicar los estilos fácilmente utilizando la @extenddirectiva.

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

Esto puede ser pertinente para algunas situaciones, pero creo que el código en la pregunta original es la mejor solución para la mayoría de las aplicaciones.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.