Paginación agregando puntos de números de página cuando se usa 'mid_size' = 0

4

Hola a todos, estoy intentando convertir mi paginación actual:

  • desde: Prev 1 2 3 Next
  • a: Page 1 of 2 -->

Mi código actual se ve así:

if( ! function_exists( 'my_pagination' ) ) {
    function my_pagination() {
        global $wp_query;    
        $big = 999999999; // This needs to be an unlikely integer
        $paginate_links = paginate_links( array(
            'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
            'current' => max( 1, get_query_var('paged') ),
            'total' => $wp_query->max_num_pages,
            'mid_size' => 0,
            'prev_next' => True,            
            'prev_text' => __('<span class="fa fa-long-arrow-left" aria-hidden="true"></span>'),
            'next_text' => __('<span class="fa fa-long-arrow-right" aria-hidden="true"></span>'),
            'type' => 'list'
        ) );
        if ( $paginate_links ) {
            echo '<div class="pagination">';
            echo $paginate_links;
            echo '</div>';
        }
    }
}

NO he tenido mucha experiencia con la paginación en WordPress hasta ahora, es decir. Pensé que me lo pondría fácil y simplemente cambiaría el tamaño del tamaño a 0, luego solo usaría CSS antes y después para agregar page of , así:

.pagination li:first-child:before {
    content: "Page "
}

.pagination li:first-child:after {
    content: " of"
}

Pero luego me doy cuenta de que WordPress se está insertando:

<li><span class="page-numbers dots">…</span></li>

Debido a 'mid_size' => 0 , y obviamente solo podría usar li:nth(2) { display: none; } en el CSS. Pero otro problema es que el número de la última página es a href , que es algo que tampoco quiero, por lo que el uso de todos estos métodos de trabajo parece un trabajo fallido y más bien de hacer en el códice en lugar del CSS. He intentado varias soluciones sin éxito.

¿Cómo deshabilito la adición de:

  • <span class="page-numbers dots">…</span> ?
  • <a href> en el último número de página?
  • ¿O cómo recomienda que continúe con la modificación de la matriz actual?
pregunta Simon Hayter 23.04.2016 - 13:53

1 respuesta

3

Aquí hay una solución:

Primero cambia el tipo de salida paginate_links() a:

'type' => 'array',

Luego podemos recopilar las partes anterior , actual y siguiente de la salida paginate_links() .

Este es un ejemplo simple donde nos dirigimos a las clases relevantes:

$next       = '';
$current    = '';
$prev       = '';
foreach( (array) $paginate_links as $link )
{           
    if( false !== strpos( $link, 'prev ' ) )
        $prev = $link;
    elseif( false !== strpos( $link, ' current' ) )
        $current = $link;       
    elseif( false !== strpos( $link, 'next ' ) )
        $next = $link;
}

Finalmente podemos construir la salida según sea necesario:

! empty( $current ) && printf(
    '<div class="pagination">%s %s %s %s %d %s</div>',
    $prev,
    esc_html__( 'Page', 'my-domain' ),
    $current,
    esc_html__( 'of', 'my-domain' ),
    $wp_query->max_num_pages,
    $next
);
    
respondido por el birgire 23.04.2016 - 23:39

Lea otras preguntas en las etiquetas