Usando paginate_links() para generar paginación "1, 2, 3 ... 10, 20, 30, 40... 55"

12 nov 2011, 21:08:36
Vistas: 30.5K
Votos: 3

Encontré este código:

    // Obtener número total de páginas
    global $wp_query;
    $total = $wp_query->max_num_pages;
    // Solo paginar si tenemos más de una página
    if ( $total > 1 )  {
         // Obtener la página actual
         if ( !$current_page = get_query_var('paged') )
              $current_page = 1;
         // La estructura del "format" depende de si estamos usando enlaces permanentes amigables
        $permalinks = get_option('permalink_structure');
        $format = empty( $permalinks ) ? '&page=%#%' : 'page/%#%/';
        echo paginate_links(array(
              'base' => get_pagenum_link(1) . '%_%',
              'format' => $format,
              'current' => $current_page,
              'total' => $total,
              'mid_size' => 2,
              'type' => 'list'
        ));
    }

Funciona bien pero genera una paginación como "1, 2, 3 ... ÚLTIMAPÁGINA", he visto plugins que generan paginaciones así "1, 2, 3... 19, 20, 30 ... ÚLTIMAPÁGINA".

¿Se puede lograr esto usando la función paginate_links()?

No quiero agregar un plugin solo para este pequeño ajuste.

0
Todas las respuestas a la pregunta 4
0

La función paginate_links() hace esto por defecto. El parámetro que lo controla es mid_size, que determina el número de enlaces de página alrededor de la página actual que se mostrarán. El valor por defecto es 2.

Esto significa que, suponiendo que tienes 12 páginas y la página actual es Página 1, la paginación se verá así:

1 2 3 ... 12

Pero si la página actual es Página 6, la paginación se verá así:

1 ... 4 5 6 7 8 ... 12

Podría estar equivocado, pero creo que así es como funcionan la mayoría de los plugins de paginación.

Edición

Disculpa, al principio malinterpreté tu pregunta y no entendí que quieres mostrar cada décima página en tus enlaces de paginación.

Esta función no tiene un parámetro incorporado para hacer lo que deseas. Tu mejor opción podría ser establecer 'show_all' como true, cambiar 'type' a 'array', y luego construir la salida manualmente, iterando a través de los valores del array.

5 abr 2012 02:28:04
0

http://codex.wordpress.org/Function_Reference/paginate_links

Lo que estás buscando es 'end_size', agrega esto al array de argumentos con el valor que desees.

27 feb 2012 13:32:55
1
$paged = (get_query_var('page')) ? get_query_var('page') : 1;

$args= new WP_Query(array(
        'post_type'=>'card',
        'posts_per_page' => 6,
        'paged' => $paged,
    ));  


    if($args->have_posts()) :

        while($args->have_posts())  : $args->the_post();

        $permalink=get_the_permalink(get_the_ID());
        $title=get_the_title();

        echo '<div class="col-md-4 card-details"><a href="'.$permalink.'">';
        echo '<div class="card-img">';the_post_thumbnail('thumbnail');echo '</div>';
        echo '<div class="card-title"><h4>'.$title.'</h4></a>';
        echo'</div>';
        echo '</div>';

        endwhile;

        $total_pages = $args->max_num_pages;

        ?>

        <div class="greetings-pagination col-md-12">

        <?php

        if ($total_pages > 1){

            $current_page = max(1, get_query_var('page'));

            echo paginate_links(array(
                'base' => get_pagenum_link(1) . '%_%',
                'format' => '/page/%#%',
                'current' => $current_page,
                'total' => $total_pages,
                'prev_text'    => __('anterior'),
                'next_text'    => __('siguiente'),
            ));
        }

    ?>  

    </div>

    <?php else :?>
    <h3><?php _e('Error 404&#58; No encontrado', ''); ?></h3>
    <?php endif; ?>
    <?php wp_reset_postdata();?>  
17 abr 2017 12:12:17
Comentarios

Solo copia el código incluyendo las dos primeras líneas y obtendrás la paginación para el tipo de entrada personalizado, eso es todo.

MZK MZK
17 abr 2017 12:19:57
0

En el sitio web para desarrolladores de WordPress se mencionan algunos parámetros. Esta es la página sobre esta función. Puedes consultar 'end_size' para más información.

Y todavía tengo una pregunta. Utilizo <?php echo paginate_links(); ?> en la plantilla de mi tema y funciona perfectamente (como muestra la imagen).Ejemplo de paginación funcionando correctamente

Pero no estoy seguro de si podría causar otros problemas.

14 nov 2017 18:41:18